【发布时间】:2012-01-26 03:00:27
【问题描述】:
假设我们有:
void createMultiArray(){
int i,j;
char*** codes = malloc(5 * sizeof(char**));
for ( i = 0; i <= 4; i++ ) {
codes[i] = malloc((i+1) * sizeof(char*));
for ( j = 0; j <= i; j++ ) {
codes[i][j] = malloc(2 * sizeof(char));
}
}
我应该如何释放codes?
free(codes);
或
int i,j;
for(i = 0; i <=4; i++){
for(j = 0; j <= i; j++){
free(codes[i][j]);
}
free(codes[i]);
}
free(codes);
【问题讨论】:
-
第二个不会导致内存泄漏 :) 这是可取的。
-
它是“首选”,我们可以说“一个是对的,另一个不是”;)
-
这不是你使用的多维数组
标签: c memory-management memory-leaks multidimensional-array free