7.7 正确从函数返回字符串
来源:互联网 发布:电脑cmd打开编程 编辑:程序博客网 时间:2024/06/05 16:32
问: 我有个函数,本该返回一个字符串,但当它返回调用者的时候,返回的字符串却是垃圾信息。为什么?
答:任何时候,函数返回指针,必须确保它指向的内存已经正确分配了。返回的指针可以是静态分配的,调用者传入的或通过malloc分配的,但决不能是局部(自动)的数组。
换言之,决不能是这样:
函数返回时,局部变量会被抛弃,返回的指针是无效的(它指向一个已经不存在的数组)。
一种解决方案是把返回缓冲区声明为静态,即static char retbuf[20];
本方案并不完美,因为使用静态数据的函数不可重入。而且连续调用这个函数会导致同一个返回缓冲区被覆盖,无法同时保存这些返回值。全局数组类似。
另一种解决方案让调用者传入保存结果的空间:
或更好的方法:
还有一种方法是使用malloc:
这种情况下,调用者必须记住最后释放指针(指向的空间),否则会引起Memory Leak。
- 7.7 正确从函数返回字符串
- 从函数中返回字符串
- 重写sum函数,“无视”参数里的字符串并返回正确的计算结果
- 从函数返回数组
- 函数返回字符串
- shell函数返回字符串
- 函数如何返回字符串
- shell 函数返回字符串
- 从DLL返回字符串数组
- 【C++】从函数返回数组
- C++---从函数返回指针
- 从C++函数返回多个值
- Highcharts从后台返回json正确的格式
- 字符串分割函数(返回数组)
- c语言函数返回字符串
- C 通过函数返回字符串
- C语言函数返回字符串
- jquery有正确返回值但不执行success函数
- php的安全(黑客技术)
- Linux下JK插件的安装
- 初识TCP-----SOCKET编程(孙鑫的教程)
- 使用installShield制作一个含调用设置、服务注册及驱动程序的安装包
- 算法的力量---李开复
- 7.7 正确从函数返回字符串
- champion~~~
- Hello ,这是从Windows Live的客户端发博客测试图片
- VC编译错误:'waveformat_tag' : 'struct' type redefinition
- VGA信号知识1
- create table 句法
- OpenGL模拟太阳、地球、月球公转自转
- JAVA-用HttpClient来模拟浏览器GET,POST (转)
- php获取超链接文本内容的几款正则表达式