分段错误(核心转储)C++,因为我使用了大量内存

Segmentation fault (core dumped) C++ as I use a lot of memory

本文关键字:内存 因为 错误 核心 转储 C++ 分段      更新时间:2023-10-16

在C++中,我使用的是"user"类,我的代码只有以下3行:

    cout<<"size of user = "<<sizeof(user)<<endl;    //prints 160
    cout<<"size of all users = "<<NUM_OF_USERS*sizeof(user)<<endl;  
    user users[NUM_OF_USERS];  //creates an array of users of size NUM_OF_USERS.

当NUM_OF_USERS只有10000时,它可以正常工作(甚至我的所有程序都可以正常工作)。但是当我把它增加到1000000时,它给出了下面的错误(仅针对这3行代码)。

Segmentation fault (core dumped)

因此,没有其他问题(没有指针或任何东西)。问题是没有内存容纳此类的大量对象(需要1600000字节=16MB)。

我使用的是一台内存很大的UNIX机器,所以我认为16MB并不多。那么,我该如何增加这个特定过程的内存呢?

数据是在堆栈上分配的。堆栈大小有限,无法调整大小。用std::vectornew[]在堆上分配这样大的块。