增加 QT 中的堆栈大小

Increase stack size in QT

本文关键字:堆栈 QT 增加      更新时间:2023-10-16

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

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

你做错。堆栈不是关于存储程序数据,而是关于存储程序状态。

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

试试这个:

QVector<YourType> data(100000000);

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

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

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