C语言 free()问题
- C/C++ code
int main(void){ char *handle_string; handle_string = (char *)calloc(12,sizeof(char)); handle_string = "d:/test.txt"; printf("%s , %d\n",handle_string,strlen(handle_string)); free(handle_string); return 0;}这段代码运行的时候,会出现堆损坏的错误,free(handle_string,没有办法释放内存。为什么???
[解决办法]
handle_string = "d:/test.txt"; 这个字符串是常量 不能free对应的地址
printf("%s , %d\n",handle_string,strlen(handle_string));
free(handle_string);
[解决办法]
handle_string = (char *)calloc(12,sizeof(char));
handle_string = "d:/test.txt";
你改变handle_string的指向了。
肯定能够没发 free啊。
[解决办法]
你是想赋值吧?字符串赋值是
strcpy。
这样:
strcpy(handle_string , "d:/test.txt");
[解决办法]
然后再释放就没问题了。
不能直接 handle_string=...
[解决办法]
[解决办法]
strcpy赋值,才能释放~~
[解决办法]
char *不能用=赋值,只能用=初始化。
[解决办法]
http://topic.csdn.net/u/20110805/16/4d0528be-dd1f-4c80-b280-684c9eb8926c.html
这个问题我也问过,这是我当时的帖子,希望对你有帮助