在C语言中,为什么以下表达式会失败?
map = malloc(sizeof(Map) * tiles);
map = {
0,2,0,0,0,0,0,0,2,0,
0,1,0,0,0,0,0,0,1,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
2,1,0,0,0,0,0,0,1,2,
0,0,0,0,0,0,0,0,0,0
};
我希望将数据以"行/列"格式填入C数组中。然而,编译器报错。
error: expected expression before ‘{’ token
(在map={line}中) 用其他方式填充数组可以正常工作,我确定括号在初始化时也起作用...但是在分配了内存之后我就无法这样做了?
编辑: 我通过创建一个临时的char数组,然后在for循环中将数据传递给malloced map来解决了这个问题。尽管如此,我仍想知道为什么上述代码会像下面指出的那样泄漏内存。我的修复方法(解析临时数组并设置映射数据)是否也会泄漏内存?
malloc
返回的地址必须被释放。由于您正在将不同的地址重新分配给map
,因此您失去了malloc
返回的地址,因此您无法再次释放它。 - Marlon