提问人:Francesco 提问时间:2/1/2023 更新时间:2/1/2023 访问量:51
释放指针数组时出现堆块错误 [已关闭]
Heap block error while freeing a pointer array [closed]
问:
我编写了这个程序,它基本上使用指针分配字符矩阵。 代码如下:
char **bitmap;
void create_bitmap() {
int i;
int columns = (int) ceil(m / 8) + 1;
bitmap = (char **) malloc(sizeof(char) * n);
for (i = 0; i < n; i++)
bitmap[i] = (char *) calloc(columns, sizeof(char));
}
void free_bitmap() {
int i;
for (i = 0; i < n; i++) {
free(bitmap[i]);
}
free(bitmap);
}
堆块错误在 free_bitmap() 过程的最后一条指令中出现。 我只是无法弄清楚是什么触发了错误。 提前致谢。
答:
1赞
Francesco
2/1/2023
#1
错误很简单,我想这是我今天早上没有集中注意力的最后证据。
在过程 create_bitmap() 中,malloc 指令应该写成:
bitmap = (char **) malloc(sizeof(char *) * n);
现在,此指令将分配 n 个 char* 指针,而不仅仅是一个 char。 赦。
评论
malloc(sizeof(char) * n);
=>malloc(sizeof(char *) * n);