QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 975|回复: 5

[求助]:C语言回收指针内存的问题

[复制链接]
发表于 2005-3-25 19:28:16 | 显示全部楼层 |阅读模式
一般书上都指出为指针malloc()分配的内存必须用free()函数回收,但我发现在《The C Programming Language》书上在使用如*name[]形式的数组指针时并没有在退出main()函数前用free()回收。能替我解释一下吗,谢谢。
发表于 2005-3-25 19:38:39 | 显示全部楼层
具体的例子程序?
回复

使用道具 举报

 楼主| 发表于 2005-3-25 20:13:18 | 显示全部楼层
具体书上是在108页
....
char *lineptr[MAXLINES]
....
main(){ .... }

int readlines(char *lineptr[MAXLINES], int maxlines){
    ...
    char *p;
while(...){
    p = alloc(len);//其实就是malloc()
    p = getline() //大概就是取得一行内容
    lineptr[i++]=p;
}
...
}
不完全一样,但也差不多了,就是找不到free()函数。
回复

使用道具 举报

 楼主| 发表于 2005-3-25 20:18:00 | 显示全部楼层
还有就是象头文件中定义指针数组时,如
char *mon[] = {"Illegal onth","January","February","March","April","May","June",                        "July","August","September","November","October","December"};
在最后是否需要调用free()回收内存?
如果在函数内部会在char 前加上static
回复

使用道具 举报

发表于 2005-3-25 22:35:45 | 显示全部楼层
如果你用了malloc应该是要free的。上述程序段没看到。你应该写完整。下面一个是说数组里放的是指针,但指针不一定是指向堆的,栈上的就不用释放了。再说一句,问问题不要偷懒,你应该贴上一个可以运行的程序。
回复

使用道具 举报

 楼主| 发表于 2005-3-26 01:02:37 | 显示全部楼层
多谢帮主大人的指点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 11:33 , Processed in 0.041555 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表