c++ - QThread 中的堆栈大小

标签 c++ qt stack qthread

QT5C++中使用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/

相关文章:

c++ - 在不违反严格别名规则的情况下,在现代 GCC/C++ 中使用网络缓冲区的正确方法

c++ - 参数包扩展在 lambda 中不起作用

c++ - Qt with visual studio,Qt 需要一个 c++17 编译器

android - 使用 C++ 创建图形应用程序

c++ - C++中的重载函数数组

c++ - 我们可以检查一个指针以确保它是一个有效地址吗?

python - QWebView : is it possible to highlight terms and do keyboard navigation?

c++ - 堆栈.h :13:3: error: ‘Cell’ does not name a type

c - C 中此通用堆栈实现的 "free"函数有什么问题?

c++ - 堆栈及其实现