在QT5和C++中使用QThread时,最大默认堆栈大小是多少?我的线程中有一个 QVector,我正在调用 myvector.append()
方法,我感兴趣的是我的 vector 有多大。我发现 uint QThread::stackSize() const
方法返回堆栈大小,但前提是之前已通过方法 setStackSize()
更改了该大小,但默认的堆栈大小是多少?
最佳答案
QThread堆栈大小可以通过这两个调用读取和设置:
uint QThread::stackSize() const
void QThread::setStackSize(uint stackSize)
如果 Qthread 是不同操作系统中操作系统特定线程的十年,则在 Linux 中 pthread 最大堆栈大小为 8M。
但是听起来您担心 QVector 正在堆栈中增长,但这并没有发生。 QVector 将数据存储在堆中。
来自QVector的源代码,
void QVector<T>::append(const T &t)
{
...
if (!isDetached() || isTooSmall) {
...
reallocData(d->size, isTooSmall ? d->size + 1 : d->alloc, opt);
...
}
它所做的只是在 HEAP 中分配新空间(预先分配预定义的元素数量)并确保数据存储在连续的内存空间中。看起来并不关心页面边界等。
关于c++ - QThread 中的堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38458758/