[英]2D array in a struct - is is possible?
我正在尝试制作一个带有2D数组的结构以存储字符串。 但是当我执行程序时,我总是收到双重释放错误
结构:
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");
}
}
和我的免费,这似乎是导致错误的原因:
for(i=0; i<size ;i++)
{
free(toBeFreed->floor[i]);
}
free(toBeFreed->floor);
free(toBeFreed);
除了用字符填充数组(使用for循环)并调用mvprintw()之外,我实际上对数组没有做太多事情,因此我认为问题不在两者之间。 我做错了什么?
编辑:所以我应该澄清一下,但是width == height == size,变量在不同的文件中,所以它们的确有所不同
EDIT2:显然是height!= width,我什至不能保持自己的变量名直!
分配时使用:
for(i=0; i<width ; i++)
释放时,您可以使用:
for(i=0; i<size ;i++)
如果width!= size,您将遇到问题。
for(i=0; i<width ;i++)
应该
for(i=0; i<height;i++)
对?
和
for(i=0; i<size ;i++)
{
free(toBeFreed->floor[i]);
}
应该
for(i=0; i<height;i++)
{
free(toBeFreed->floor[i]);
}
也
malloc(sizeof(char) * (width + 2));
+2来自哪里?
除此之外,还可以,您能否提供代码以使其使用?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.