gpt4 book ai didi

c - 使用 malloc() 在 C 中分配 3D 数组

转载 作者:行者123 更新时间:2023-12-02 00:39:36 26 4
gpt4 key购买 nike

我正在尝试在 C 中分配一个 3D 数组。如您所知,它用于存储图像数据,格式为 Array[height][width][channel];这是我的代码。

BYTE*** allocateImageArray(INT_32 width, INT_32 height, INT_32 channels) {
BYTE*** array;
INT_32 i, j;

array = malloc(height * sizeof(BYTE**));

for(i = 0; i < height; i++) {
array[i] = malloc(width * sizeof(BYTE*));

for(j = 0; j < channels; j++) {
array[i][j] = malloc(channels * sizeof(BYTE));
}
}

printf("Pixel Array Size: %d\n", sizeof(array));
return array;
}

它编译得很好。但是,数组的末尾始终为 8(由 sizeof 指示)。当我稍后尝试在代码中访问该数组时,程序就崩溃了。

预先感谢所有答案。

编辑:忘记包括在内。我已经找出程序崩溃发生的地方。当我尝试为数组末尾的 BYTES 之一赋值时,就会发生这种情况。

最佳答案

sizeof 运算符不是那样工作的。把它想象成一个特殊的 #define 宏,根据它的类型计算出它的大小。

因此 sizeof(array)sizeof(BYTE***) 相同,与 sizeof(void*) 相同对于您的计算机来说显然是 8。

关于c - 使用 malloc() 在 C 中分配 3D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20232755/

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