释放一系列字符指针(字符串文字)?

时间:2014-05-02 00:03:49

标签: c arrays pointers memory

我试图弄清楚如何为一个字符指针数组(字符串文字)释放内存,但我无法获得语法。这就是我宣布和初始化数组的方式。

char * words[] = { "THESE", "ARE", "SOME", "WORDS" };

我试过这样做......

free(words);

这就是......

for(i = 0; i < 4; i++) {
    free(words[i]);
}

但第一个引起glibc的某种无效指针错误,第二个引起分段错误。

那么释放这段记忆的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

如果您没有分配它(例如malloccalloc),那么您也不应该取消分配它(例如free)。

如果您需要释放从函数返回的指针,文档通常会非常明确和明确,例如strdup就是这种情况。