我试图弄清楚如何为一个字符指针数组(字符串文字)释放内存,但我无法获得语法。这就是我宣布和初始化数组的方式。
char * words[] = { "THESE", "ARE", "SOME", "WORDS" };
我试过这样做......
free(words);
这就是......
for(i = 0; i < 4; i++) {
free(words[i]);
}
但第一个引起glibc的某种无效指针错误,第二个引起分段错误。
那么释放这段记忆的正确方法是什么?
答案 0 :(得分:3)
如果您没有分配它(例如malloc
,calloc
),那么您也不应该取消分配它(例如free
)。
如果您需要释放从函数返回的指针,文档通常会非常明确和明确,例如strdup
就是这种情况。