gpt4 book ai didi

c - C中动态二维数组的限制

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

该程序使用 malloc 创建一个二维数组,并用 func 填充它。 fprintf 写入文件。这就是所有人。

但是如果我对 heightwidth 使用大整数,我会从程序中意外退出。

(30,60):好的

(60,80):不行

(60,65):好的

(17,41):好的

(200,200):不行

有人知道吗?

int main() {

unsigned char **buf = (unsigned char **)malloc(height * sizeof(unsigned char*));
for (int i = 0; i < height; ++i)
buf[i] = (unsigned char *)malloc(width * sizeof(unsigned char));

func(buf);

FILE * f = fopen("foo.txt", "w+");
for(int i= 0;i<height;++i)
fprintf(f, "%s%c", buf[i], '\n');
fclose(f);

for (int i = 0; i < height; ++i)
free(buf[i]);
free(buf);
}

void func(unsigned char** buf) {
for (int i = 0; i < height; ++i) {
for (int j = 0; j < width; ++j)
buf[i][j] = 48 + (i/10)%10;
buf[i][width] = '\0';
}
}

最佳答案

您需要为分配空间 '\0'

buf[i] = (unsigned char *)malloc(image_width * sizeof(unsigned char));

buf[i][width] = '\0';

buf[i][width] 不存在

尝试

buf[i] = malloc(image_width + 1);

关于c - C中动态二维数组的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57371842/

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