Rav*_*tel 1 c arrays malloc pointers multidimensional-array
我想将内存分配给类型的二维数组,int但内存应该是连续的.
只需拨打一个电话就可以释放它free( ptr ).我不需要为每个内存块免费调用.
形式上,它是这样完成的:
int (*arr_ptr) [x][y] = malloc( sizeof(int[x][y]) );
(*arr_ptr)[i][j] = something; // access one element
free(arr_ptr);
Run Code Online (Sandbox Code Playgroud)
但是,这使元素的访问有点不方便:(*arr_ptr)[i][j]有点难以阅读.避免这种情况的一个技巧是省略数组指针的一个维度,而是将其视为一维数组的数组:
int (*arr_ptr) [y] = malloc( sizeof(int[x][y]) );
arr_ptr[i][j] = something; // access one element
free(arr_ptr);
Run Code Online (Sandbox Code Playgroud)
如果你有一个古老的编译器,你必须创建一个更丑陋,"受损"的2D数组:
int* ptr = malloc( sizeof(int) * x * y );
ptr[i*y + j] = something; // access one element
free(ptr);
Run Code Online (Sandbox Code Playgroud)