C语言 free()有关问题

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.****.net/u/20110805/16/4d0528be-dd1f-4c80-b280-684c9eb8926c.html

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