我知道我可以在使用这些标志.pro来增大的尺寸stack和heap在QT在我的C++项目.但在linux中它没有任何影响,我仍然有堆栈大小问题.我怎样才能在linux中解决这个问题,还是有其他解决方案?
QMAKE_CXXFLAGS += -Wl,--stack,100000000
QMAKE_CXXFLAGS += -Wl,--heap,100000000
Run Code Online (Sandbox Code Playgroud)
你错了.堆栈不是关于存储程序数据,而是关于存储程序状态.
大量数据应该在堆上,堆栈只是将程序代码保持在一起的,它是应用程序的主干,而不是数据库.
试试这个:
QVector<YourType> data(100000000);
Run Code Online (Sandbox Code Playgroud)
如果系统可以分配足够的内存,您现在可以将该数据与标准数组[]运算符一起使用.
请记住,100米int已经超过380 MB.即使你增加堆栈大小,没有人使用380 MB的堆栈,典型的堆栈大小通常不超过几兆字节,这足以适用于非常大的应用程序.如果您的数据类型较大,则需要更多的连续内存,因此根据您的系统和编译器,完全有可能甚至无法在堆上进行此类分配.
| 归档时间: |
|
| 查看次数: |
1039 次 |
| 最近记录: |