我正在用 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++ 处理大型数组的方式是什么?