返回信息流经常用到一些函数,返回的是char*类型的返回值。
但是我们知道,栈内存里的字符串是不能使用指针来返回的。
因此返回的值肯定在堆内存区,全局变量区,和常量存储区。
常量存储区和全局变量区基本可以排除。
那么基本可以肯定返回的指针指向的是堆内存区,
使用函数time()和ctime()返回的时间字符串地址和new返回的地址非常接近,这也验证了之前的判断。但是没返回这样一个指针,当指针失效时,不是会造成内存泄漏么?还是说这种字符串的分配占用不了太多内存,泄漏可以忽略?
另外,使用vs2008 怎么查看一个内存空间属于哪个区?是堆,栈还是常量等。
哪位大牛解释下这些问题,谢谢。
这是一条镜像帖。来源:北邮人论坛 / cpp / #28761同步于 2009/9/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于返回字符串指针的问题
littlefly
2009/9/19镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
【 在 littlefly 的大作中提到: 】
: 经常用到一些函数,返回的是char*类型的返回值。
: 但是我们知道,栈内存里的字符串是不能使用指针来返回的。
: 因此返回的值肯定在堆内存区,全局变量区,和常量存储区。
: ...................
首先,链接为可执行文件的时候是把c库的启动代码和结束代码一起连接进去。所以内存释放会在c库的结束代码进行free