gpt4 book ai didi

c - 为二维整数数组分配内存,但它应该是连续的

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:16 24 4
gpt4 key购买 nike

我想分配内存给 int 类型的二维数组,但是内存应该是连续的。

只需调用一次 free( ptr ) 即可将其释放。我应该不需要调用 free 到每个内存块。

最佳答案

正式地,它是这样完成的:

int (*arr_ptr) [x][y] = malloc( sizeof(int[x][y]) );

(*arr_ptr)[i][j] = something; // access one element

free(arr_ptr);

但是,这使得元素的访问有点不方便:(*arr_ptr)[i][j] 有点难以阅读。避免这种情况的一个技巧是省略数组指针的一维,而是将其视为一维数组的数组:

int (*arr_ptr) [y] = malloc( sizeof(int[x][y]) );

arr_ptr[i][j] = something; // access one element

free(arr_ptr);

如果你有一个古老的编译器,你必须创建一个更丑陋的、“困惑的”二维数组:

int* ptr = malloc( sizeof(int) * x * y );

ptr[i*y + j] = something; // access one element

free(ptr);

关于c - 为二维整数数组分配内存,但它应该是连续的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34763295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com