在QT中增加堆栈大小

时间:2018-03-05 10:09:45

标签: c++ qt stack

我知道我可以在.pro中使用这些标志来增加QT中我的c ++项目中stackheap的大小。但在linux中它没有任何影响,我仍然有堆栈大小问题。我如何在linux中解决这个问题还是有其他解决方案?

QMAKE_CXXFLAGS += -Wl,--stack,100000000
QMAKE_CXXFLAGS += -Wl,--heap,100000000

2 个答案:

答案 0 :(得分:6)

你正在解决这个问题错误。关于存储程序数据的堆栈,它是关于存储程序状态的。

大量数据应该在堆上,堆栈只是将程序代码保持在一起的,它是应用程序的主干,而不是数据库。

请改为尝试:

QVector<YourType> data(100000000);

如果系统可以分配足够的内存,您现在可以将该数据与标准数组[]运算符一起使用。

请记住,100米int已超过380 MB。即使你增加堆栈大小,没有人使用380 MB的堆栈,典型的堆栈大小通常不超过几兆字节,这足以适用于非常大的应用程序。如果您的数据类型较大,则需要更多的连续内存,因此,根据您的系统和编译器,完全有可能即使在堆上也无法进行此类分配。

答案 1 :(得分:0)

在Linux中,不能通过将标志传递给gcc来更改堆栈大小。您应该使用命令“ ulimit -s newsize”进行更改。