我使用 CLion 在 Windows 11 上构建此代码。我的系统是 64 位并且具有 32GiB 内存。
#include <iostream>
#include <chrono>
#include <thread>
int main() {
int len = 0;
std::cin >> len;
auto arg = std::make_unique<int32_t[]>(len);
std::this_thread::sleep_for(std::chrono::seconds(100));
}
我正在尝试创建一个大型动态数组。当此数组的类型为
int
(4 BYTES)时,此数组的最大大小约为8192MiB。如果我将此数组的类型更改为 int16_t
(2 字节),则此数组的最大大小约为 4096MiB。如果我将此数组的类型更改为 char
(1 字节),则此数组的最大大小约为 2048MiB。
| Size of variables | Max Memory (MiB) |
| ----------------- | ---------------- |
| 4 BYTES | 8192 |
| 2 BYTES | 4096 |
| 1 BYTES | 2048 |
int
可以容纳的典型最大值是 2,147,483,647,看起来您的最大尺寸受限于 int
的这个限制。
尝试使用
long long
而不是 int
len
.