【发布时间】:2017-04-06 10:26:02
【问题描述】:
我正在尝试创建 struct grid_t 的二维数组,并通过地址清理程序收到内存泄漏警告,并最终在某些情况下出现段错误。
我的代码中可能有多个点导致了这种情况,但我认为知道这里出了什么问题会为我指明正确的方向来修复其余部分。
我是 C 和内存管理的新手,因此欢迎和感谢所有反馈!
void createGridArray(atom_t* ATOM) {
ATOM -> grid = (grid_t**) malloc(WIDTH * sizeof(grid_t*));
grid_t *nullGrid = malloc(sizeof(grid_t));
grid_t temp = {NULL, 0};
*nullGrid = temp;
for (int i = 0; i < WIDTH; i++) {
(ATOM -> grid)[i] = malloc(HEIGHT * sizeof(grid_t));
for (int j = 0; j < HEIGHT; j++) {
(ATOM -> grid)[i][j] = *nullGrid;
}
}
//free(nullGrid); <- do I do this now?
return;
}
【问题讨论】:
-
atom_t,grid_t.. 我们应该知道这些是什么吗?发布minimal reproducible example。 -
是的 - 没有数据和类型的代码只会令人困惑。
-
@SouravGhosh 您是如何设法在每篇文章中忠实地粘贴该链接的?您是否设置了用于粘贴该链接的热键组合?
-
@AjayBrahmakshatriya 是的,FN+C,FN+V。 :P
标签: c memory-leaks malloc