C语言 free()有关问题
C语言 free()问题C/C++ codeint main(void){char *handle_stringhandle_string (char *)calloc(12,size
C语言 free()问题
C/C++ codeint 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
这个问题我也问过,这是我当时的帖子,希望对你有帮助