首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言 free()有关问题

2012-09-10 
C语言 free()问题C/C++ codeint main(void){char *handle_stringhandle_string (char *)calloc(12,size

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=...
[解决办法]
探讨

handle_string = (char *)calloc(12,sizeof(char));
handle_string = "d:/test.txt";

你改变handle_string的指向了。
肯定能够没发 free啊。

[解决办法]
strcpy赋值,才能释放~~
[解决办法]
char *不能用=赋值,只能用=初始化。
[解决办法]
http://topic.csdn.net/u/20110805/16/4d0528be-dd1f-4c80-b280-684c9eb8926c.html

这个问题我也问过,这是我当时的帖子,希望对你有帮助

热点排行
Bad Request.