c++ - C++中分配的大小限制?

标签 c++ memory-management allocation

我用它在 cpp 中分配一个二维数组:

int s[n][2];

但似乎当 n 非常大(高达 1e6)时,这会产生运行时错误(退出代码:11)。

如何解决这个问题?

最佳答案

那不是动态分配。此外,如果 n 是一个变量,它甚至不是有效的 ANSI C++,因为您不能声明条目数可变的数组。

要正确地动态分配,请考虑使用 std::vector

#include <vector>
//...
// Simulate s[n]
std::vector<std::vector<int>> s(n, std::vector<int>(2));
//..
// You can now use s similar to a 2 dimensional array.

如果出于某种原因,您需要二维数组的数据是连续的,请考虑此处的答案:

how to create a contiguous 2d array in c++?

关于c++ - C++中分配的大小限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31014310/

相关文章:

c++ - 如何将字符数组转换为字节数组?

c++ - 未处理的异常 Microsoft C++ 异常:cv::Exception at memory location

c - char* 数组中的元素在复制到新数组时损坏

c - 从文件读入动态分配的字符串数组

c++ - C++ 分配器的 std::align_val_t 的有效对齐值是多少?

c++ - 如何向 task.json 添加多个包含路径?

c++ - 如何使用 std::exception —— 堆栈跟踪和内存泄漏

java - 如何处理退出的 Android 应用程序?

c - malloc 实现?

caching - 计算有效访问时间