在 C++ 中,堆空间的分配由'new' 操作符来完成。为了测试系统中最大可以分配多少字节的数据,可以使用循环不断分配内存,并检查分配是否成功,直到分配失败为止。

下面是一个示例代码:

#include <iostream>

int main() {
    size_t maxSize = 0;
    size_t stepSize = 1024 * 1024;  // 每次增加 1MB

    while (true) {
        try {
            char* data = new char[maxSize + stepSize];
            delete[] data;
            maxSize += stepSize;
        } catch (std::bad_alloc&) {
            break;
        }
    }

    std::cout << "最大可分配内存大小:" << maxSize << " 字节" << std::endl;

    return 0;
}

上述代码会不断尝试分配内存,每次增加1MB,直到分配失败为止。最后输出的'maxSize'就是系统中最大可分配的字节数。

需要注意的是,不同的操作系统和硬件环境对可分配的内存大小有限制,因此最终的结果可能会受到系统限制而小于实际可用内存的大小。

C++ 堆空间分配测试 - 确定系统最大可分配内存

原文地址: https://www.cveoy.top/t/topic/bhrB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录