请帮助我理解这一点:
我有一个指向指针的指针
char** word_array = NULL;
然后我在代码中动态分配内存:
n = 6;
word_array = (char *) malloc(n* sizeof(char*));
如何删除分配给指针“数组”的所有内存?这样对free
的呼叫正确吗?
free(word_array);
或者我应该做一个循环:
for(int i = 0 ; i < n; i++) free(word_array + i);
答案 0 :(得分:4)
您使用了一个malloc
,因此您应该使用一个free
。
此外,对char*
的强制转换是胡说:word_array
的类型为char**
,而不是char*
,并且malloc()
的转换结果为discouraged
所以整个流程是这样的:
int n;
char** word_array = NULL;
n = 6;
word_array = malloc(n* sizeof(char*));
if (word_array == NULL) {
/* handle allocation error */
} else {
/* do some work with word_array */
/* free pointers stored in word_array if they are dynamically allocated
and not freed yet */
free(word_array);
}