我试图在一个连续的内存块中创建二维数组,但它给出了 M 个连续的 block ,每个 block 的大小为 N。
int **arr = new int*[M];
for (int i = 0 ; i < M ; i++ )
{
arr[i] = new int[N];
}
如何在连续的内存块中创建二维数组?
最佳答案
int *buffer=new int[M*N];
int **arr=new int*[M];
for(int i=0;i<M;++i)
arr[i]=buffer+i*N;
实际上没有必要存储 arr 指针——它们可以在需要时计算。
关于c++ - 在连续内存块中动态创建二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4552080/