LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2239|回复: 13

这个内存struct hostent *h = gethostbyname(addr);需不需要自己释放

[复制链接]
发表于 2004-3-31 20:03:24 | 显示全部楼层 |阅读模式
调用一个库函数,该库还是返回一个地址,该地址指着一个结构。这个地址所指向的内存要自己释放嘛.

从函数中只能返回在堆里分配的内存地址,这个地址到底需要自己释放吗?
发表于 2004-3-31 20:37:46 | 显示全部楼层
从函数中只能返回在堆里分配的内存地址,
can be return "static" variables
这个地址到底需要自己释放吗?
no
 楼主| 发表于 2004-3-31 20:48:10 | 显示全部楼层
你能讲一下为什么如果分配的是static型的内存就不需要自己释放啊
发表于 2004-4-1 09:02:32 | 显示全部楼层
这个变量是在库里面定义的,不用去管它。
发表于 2004-4-1 09:02:35 | 显示全部楼层
这个变量是在库里面定义的,不用去管它。
发表于 2004-4-1 17:00:07 | 显示全部楼层
struct hostent *h = gethostbyname(addr);
dns的查询嘛
unp里有的啊,上面就要自己释放
不过问了到想想也是
啥时候应该用动态分配内存空间?啥时候应该自己释放变量?
好象这个概念还不清楚……
发表于 2004-4-1 18:12:40 | 显示全部楼层
最初由 cgl520cn 发表
你能讲一下为什么如果分配的是static型的内存就不需要自己释放啊


static变量拥有局部作用域和全局生存期(跟全局变量一样分配在bss段)
发表于 2004-4-1 18:16:17 | 显示全部楼层
最初由 dancingpig 发表
struct hostent *h = gethostbyname(addr);
dns的查询嘛
unp里有的啊,上面就要自己释放
不过问了到想想也是
啥时候应该用动态分配内存空间?啥时候应该自己释放变量?
好象这个概念还不清楚……


对于正式发布的库中的函数来说,如果函数使用手册告诉你该函数在堆上分配空间,你就要自己释放了,不过这样的函数我还没见过
发表于 2004-4-2 08:56:10 | 显示全部楼层

比如 scandir
另有几个是当传进空指针,会自动分配(返回值返回),这时候需要自己释放。
发表于 2004-4-2 13:57:50 | 显示全部楼层
最初由 keenor 发表

比如 scandir
另有几个是当传进空指针,会自动分配(返回值返回),这时候需要自己释放。


这回见到了,呵呵:%
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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