如何释放()指针指针引用的内存?

时间:2020-10-04 13:13:42

标签: c

请帮助我理解这一点:

  1. 我有一个指向指针的指针

    char** word_array = NULL;
    
  2. 然后我在代码中动态分配内存:

    n = 6;
    word_array = (char *) malloc(n* sizeof(char*));
    
  3. 如何删除分配给指针“数组”的所有内存?这样对free的呼叫正确吗?

    free(word_array);
    

    或者我应该做一个循环:

    for(int i = 0 ; i < n; i++) free(word_array + i);
    

1 个答案:

答案 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);
}