社区首页 >问答首页 >如何在C中释放二维数组?问如何在C中释放二维数组?ENStack Overflow用户提问于 2011-04-15 00:11:03回答 5查看 66.9K关注 0票数 28我有以下代码:
代码语言:javascript复制int **ptr = (int **)malloc(sizeof(int*)*N);
for(int i=0;i ptr[i]=(int*)malloc(sizeof(int)*N));如何使用free免费使用ptr?我应该循环遍历ptr并释放ptr[i]吗?还是应该直接这样做 代码语言:javascript复制free(ptr) 那么ptr会被释放吗? cmemory-management关注问题分享EN回答 5推荐最新Stack Overflow用户回答已采纳发布于 2011-04-15 00:12:45 您必须循环遍历ptr[i],按照您第一次建议的那样释放您遍历的每个int*。例如: 代码语言:javascript复制for (int i = 0; i < N; i++) { int* currentIntPtr = ptr[i]; free(currentIntPtr); }收藏分享票数 23ENStack Overflow用户发布于 2011-04-15 00:14:06 与分配正好相反: 代码语言:javascript复制for(int i = 0; i < N; i++) free(ptr[i]); free(ptr);收藏分享票数 25ENStack Overflow用户发布于 2011-04-15 00:13:38 是的,您必须循环遍历ptr并释放每个ptr[i]。为了避免内存泄漏,一般规则是:对于每个malloc(),必须恰好有一个对应的free()。 收藏分享票数 8EN查看全部 5 条回答页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持原文链接:https://stackoverflow.com/questions/5666214 复制相关文章
