在C ++中,我使用的是'user'类,我的代码只有以下三行:
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只有10,000时,它可以正常工作(甚至我的所有程序都可以正常工作)。但是,当我将其增加到1000,000时,它给出以下错误(仅针对这三行代码)。
Segmentation fault (core dumped)
因此,没有其他问题(没有指针或任何东西)。问题是没有足够的内存用于此类的大量对象(需要16,000,000字节= 16MB)。
我使用的是内存很大的UNIX计算机,因此我认为16 MB并不多。那么,如何增加为该特定进程分配的内存?
数据分配在堆栈上。堆栈的大小有限,无法调整大小。用std::vector
或分配堆上的大块new[]
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句