免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1776 | 回复: 5
打印 上一主题 下一主题

[函数] 库函数返回值为指针的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-02 08:47 |只看该作者 |倒序浏览
很多库函数返回值为指针,它是如何保证在库函数返回后这些指针是指向我们想要的那个地址。
因为如果库函数返回,那它申请的那块(在堆或是栈上)内存还存在吗,他是如何保证那块内存不被释放呢

论坛徽章:
0
2 [报告]
发表于 2006-08-02 08:52 |只看该作者
库函数返回值为指针的:
只镇一般是指向一全局变量或者静态变量。库函数只是更改全局变量和静态变量的值。
然后,返回一全局变量或者静态变量的指针。
----------------------
我没有看过库函数的实现。这只是我猜得。请大家指教。。

论坛徽章:
0
3 [报告]
发表于 2006-08-02 09:00 |只看该作者
1, 静态地址.
2, 你输入的地址相关, 例如 strcat, strstr等
3, 函数分配的地址,需要你释放, malloc...

论坛徽章:
0
4 [报告]
发表于 2006-08-02 10:59 |只看该作者
你当然可以怀疑,最好还发现了它,然后给库编写者发个邮件。告诉他他的作品威胁到了你的代码质量,然后起诉他,前提你是授权使用的



然后,恭喜你,你可以小发一笔了

论坛徽章:
0
5 [报告]
发表于 2006-08-02 13:06 |只看该作者
原帖由 connet 于 2006-8-2 09:00 发表
1, 静态地址.
2, 你输入的地址相关, 例如 strcat, strstr等
3, 函数分配的地址,需要你释放, malloc...


不错。。。。
就是的。。。。

论坛徽章:
0
6 [报告]
发表于 2006-08-02 14:39 |只看该作者
对于楼主的问题:
1:这就是库函数的功能,要想搞清楚就去看库函数的具体实现。如果返回的地址是错误的,请提交错误报告。
2:如果是动态分配的,即使用malloc/new,则该对象被分配在堆上,资源由程序员来管理,因此是由你来对其进行消毁。如果是分配在栈上,那么函数退出后由于stack unwinding,该资源将会回收,该函数将返回悬挂的指针,进而引起问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP