首页 > 解决方案 > 为什么尝试在 C++ 中分配二维数组会导致内存损坏错误?

问题描述

我有这段代码,试图分配一个二维数组:

int** arr;
int rows = 32;

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

在网上arr = new int*[rows],我收到以下错误:

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.

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

标签: c++c++11malloc

解决方案


推荐阅读