c - 请帮我释放这个动态分配的数组

标签 c arrays malloc free

row = n + 1;
col = n + 1;
//used n+1 and i=-1 to avoid segmentation faults

board = malloc(row*sizeof(char *));
for(i=-1;i<row;i++)
{       
    board[i] = malloc(col*sizeof(char));
    if(board[i] == NULL)
    {
        printf("Out of memory");
            exit(EXIT_FAILURE);
    }
}

for(i=-1; i < n+1; ++i)
{
    free(board [i]);
}
free(board);

当我试图在运行时释放这个数组时,我的编译器变得疯狂,请解释,谢谢。

最佳答案

数组在 C 中不能有负索引。

行:for(i = -1; i < row; i++)

我很确定,这里有一个错误,其中 free正在释放一个不是 malloc() 的额外 block ed 最后,您一定遇到了段错误。

关于c - 请帮我释放这个动态分配的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850997/

相关文章:

arrays - 更新 mongo 3.5 嵌套数组中的值

c - 函数名 "conv"中的 "localeconv()"是什么意思?

python - 使用 ctypes 为 C 函数传递和获取数组的问题

python - Numpy:搜索第一个匹配行

php - 如何在 PHP 类中定义数组属性

c - 使用 scanf 的二维数组中的段错误

c - 函数参数分配?

c - malloc 可以为您的程序分配多少 GB

c - 使用ffmpeg libavfilter提取亮度数据,具体为PIX_FMT_YUV420P类型

c - 使用C堆栈在链表中,但我的推送方法有错误