Chinaunix

标题: C语言中const修饰的char *需要free么?static呢? [打印本页]

作者: jjj137    时间: 2009-01-18 22:44
标题: C语言中const修饰的char *需要free么?static呢?
RT,不太明白C语言的内存分配……也可能是glib的问题……
我以为const要释放,可是报错double free or corruption了……
    const gchar *au [] = {
        "Some text",
        NULL
    };
    g_free (au);

PS:有没有讲内存分配的好书或者文章啊?
作者: 术士    时间: 2009-01-18 22:45
不需要
作者: eveson    时间: 2009-01-18 22:46
是的,没有malloc就不需要free
作者: 79hy    时间: 2009-01-18 23:55
呵呵。只是变量分配在静态区还是变量区。程序退出就自动释放了。
作者: scutan    时间: 2009-01-19 00:00
>>有没有讲内存分配的好书或者文章啊

《C专家编程》《深入理解计算机系统》
作者: samon_fu    时间: 2009-01-19 04:55
man malloc
man free

哪里又需要看书了?不嫌麻烦啊。man手册啊man,man,man
作者: smartlinux    时间: 2009-01-19 09:57
看书可以系统的理解
作者: jjj137    时间: 2009-01-19 20:13
原帖由 eveson 于 2009-1-18 22:46 发表
是的,没有malloc就不需要free

那char *也不用free了?为什么char * free的时候不出错,但是加上const就出错呢?
作者: beepbug    时间: 2009-01-19 20:23
存储分配是很大很复杂的一块学问,靠man是不行的。
作者: beepbug    时间: 2009-01-19 20:24
1)存储分配是很大很复杂的一块学问,靠man是不行的。
2)只有动态分配的空间才有必要回收,实际上也才有可能回收。
作者: xiexiecn    时间: 2009-01-19 20:56
标题: 回复 #1 jjj137 的帖子
搞清楚这些概念:全局变量,局部变量,堆,栈,数据段,代码段。内存的问题就清楚了。
作者: MMMIX    时间: 2009-01-19 21:00
原帖由 eveson 于 2009-1-18 22:46 发表
是的,没有malloc就不需要free

That's it. 需不需要 free 取决于你的内存是怎么来的。
作者: langue    时间: 2009-01-20 12:05
先说你想 free() 谁?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2