C++ 为什么要在C++;导致内存损坏错误?

C++ 为什么要在C++;导致内存损坏错误?,c++,c++11,malloc,C++,C++11,Malloc,我有以下代码,试图分配一个2D数组: int** arr; int rows = 32; arr = new int*[rows]; for(int i=0; i<rows; i++) { arr[i] = new int[64]; } 为什么会发生这种情况?我不会访问分配的内存之外的任何内存,只是在那里分配新内存。问题可能在其他地方。提供一个,我们将能够帮助你。为什么这个有cuda标签?你可能需要自己解决这个问题。请记住,堆损坏可能是在程序执行的更早阶段造成的。崩溃不必在堆损

我有以下代码,试图分配一个2D数组:

int** arr;
int rows = 32;

arr = new int*[rows];
for(int i=0; i<rows; i++)
{
    arr[i] = new int[64];
}

为什么会发生这种情况?我不会访问分配的内存之外的任何内存,只是在那里分配新内存。

问题可能在其他地方。提供一个,我们将能够帮助你。为什么这个有cuda标签?你可能需要自己解决这个问题。请记住,堆损坏可能是在程序执行的更早阶段造成的。崩溃不必在堆损坏后立即发生。出现的代码很可能不是原因。请详细解释并完成代码以查看发生的情况
malloc(): memory corruption

Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at                 ../sysdeps/unix/sysv/linux/raise.c:51
51  ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.