增加 QT 中的堆栈大小
Increase stack size in QT
我知道我可以在.pro
使用这些标志来增加 QT 中 c++ 项目中stack
和heap
的大小。但是在 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"来更改它。
相关文章:
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- Qt 5.9中的QML崩溃-帮助读取堆栈跟踪
- 增加 QT 中的堆栈大小
- QT应用程序崩溃但不容易复制,我捕获了转储堆栈以及如何通过堆栈找到源代码
- 未初始化的值是由堆栈分配 - Qt - C++创建的
- Qt - 堆栈上具有父级的 QObject 如何被删除两次?
- 用GCC 4.6.2 C QT设置堆栈大小,Mingw,Vista
- 无法序列化和反序列化 Qt/C++ 中的字符串堆栈
- 将链接放到QMainWindow时的Qt浏览器堆栈
- QT -主要部件-堆栈或堆
- 在qt中更改不同堆栈小部件页面中的菜单栏内容
- 如何设置Qt使用blueZ蓝牙堆栈
- 堆栈对象Qt信号和参数作为参考
- linux上的Qt应用程序如何崩溃,堆栈中没有我的代码(只有Qt代码和std库)
- 如何防止QT事件堆栈溢出
- Qt如何处理堆栈分配的对象
- 如何在Qt中增加线程的堆栈大小- QThread::setStackSize()似乎不起作用