假设我将二维数组的地址连同二维数组的行和列一起传递给函数。
该函数会将二维数组的地址视为一维数组。(例如 int 矩阵 [] )
如果我执行以下代码:
int** arr;
arr = new int*[row];
for ( int i = 0; i < row; i++ )
{
arr[i] = new int[column];
}
假设,我认为在多线程系统中,这可能不会为二维数组分配连续的内存。我对么?
但是,我认为在单线程系统中,这将为二维数组分配连续的内存。我对吗?如果是这样,它“总是”是真的吗?还是取决于编译器和操作系统?
如果代码现在是这样的:
int** arr; int** arr2; arr = new int*[row]; arr2 = new int*[row]; for ( int i = 0; i < row; i++ ) { arr[i] = new int[column]; arr2[i] = new int[column]; }
我没有连续的内存二维数组。即使每一行中的元素是连续的,行本身也不会与下一行连续。我对么?
如果以上所有内容都是正确的,那么在 C++ 中,并非每个二维数组都是连续内存,对吧?