c - 结构中的二维数组 - 可能吗?

标签 c arrays memory-management malloc structure

我正在尝试创建一个包含二维数组的结构来存储字符串。但是我在执行程序的时候一直报double free错误

结构:

    struct room{
        int x;
        int y;
        char ** floor;
};

这是我的 malloc:

struct room * newRoom = malloc(sizeof(struct room));
newRoom->floor = malloc(sizeof(char *) * height);
if(newRoom->floor == NULL || newRoom == NULL)
{
    printf("Room allocation failed \n");
}
for(i=0; i<width ;i++)
{
    newRoom->floor[i] = malloc(sizeof(char) * (width + 1));
    if(newRoom->floor[i] == NULL)
    {
        printf("Room string allocation failed \n");
    }
}

还有我的 free,这似乎是导致错误的原因:

for(i=0; i<size ;i++)
{
    free(toBeFreed->floor[i]);
}
free(toBeFreed->floor);
free(toBeFreed);

除了用字符填充数组(使用 for 循环)并调用 mvprintw() 之外,我并没有对数组做太多事情,所以我认为问题不在两者之间。我做错了什么?

编辑:所以我应该澄清一下,但是 width == height == size,变量在不同的文件中,所以它们确实有点不同

EDIT2:显然高度!= 宽度,我什至不能保持我自己的变量名是直的!

最佳答案

分配时使用:

for(i=0; i<width ; i++)

释放时,您使用:

for(i=0; i<size ;i++)

如果 width != size,你就会遇到问题。

关于c - 结构中的二维数组 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5285418/

相关文章:

c - 访问结构的成员或多维数组的每个维的声明边界外

c - 为什么 realloc 会消耗大量内存?

c - 类似于 scanf 的函数中的内存泄漏问题

php - 如何在 PHP 中克隆对象数组?

javascript - 如何在 ng-repeat 中制作选定行的数组?

python - 根据第一个数组的条件查找第二个数组中的值。最有效的方法是什么?

qt - QList和删除

C++ 内存没有被回收离开作用域的对象 - 在我束手无策的情况下

android - 钛内存管理

c - C 语言中 sendto() 和 recvfrom() 形式参数的区别