小编Mag*_*gan的帖子

我应该对非常大的数组使用 std::array 吗?惯用的替代方案是什么?

我正在用 C++ 做大学作业。我主要接受的是 C 语言教学,因此我正在努力练习更“惯用的”C++。

在 C 语言中,我在使用大型动态分配数组时没有遇到任何问题:

int* board = (int*) malloc(2048 * 2048 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)

在C++中,据我了解,malloc不应该使用,也不应该使用newand delete,相反 RAII 才是王道。与其自己担心内存的分配和释放,我更愿意使用 STL。

但是,此代码不会运行(但会编译):

std::array<int, 2048 * 2048> board;
Run Code Online (Sandbox Code Playgroud)

使用 Valgrind,我注意到尝试在堆栈上分配的内存量(大约 840 万int秒)远远超出了操作系统愿意做的事情。

C++ 处理大型数组的方式是什么?

c++ arrays stl

1
推荐指数
1
解决办法
207
查看次数

标签 统计

arrays ×1

c++ ×1

stl ×1