MyException - 我的异常网
当前位置:我的异常网» C++ » 函数返回类型是char *好吗,该怎么处理

函数返回类型是char *好吗,该怎么处理

www.MyException.Cn  网友分享于:2013-03-22  浏览:66次
函数返回类型是char *好吗
函数返回类型是char *可以吗?不是因为函数调用结束后内存就把与函数相关的变量全释放了吗?为什么还有函数返回类型是char *?请大侠指教,谢谢!
C++  返回值类型

------解决方案--------------------
栈相关的变量信息已经不可靠;
但函数内,从堆分配的内存不随着函数结束而释放
最常见的函数就是 malloc 就是返回 内存指针的函数

char* fun(){

    char* p= malloc(100);
    return p;
}
------解决方案--------------------
如果在堆上申请内存,返回char指针,是可以 的
------解决方案--------------------
通过函数返回一个对象的引用或是地址,都是不可靠的,存在隐患的。
返回堆区的地址是可以的,不过你要考虑配套的释放空间函数了。
返回静态变量地址也是可以的,因为函数结束,这块内存是不会被回收的
------解决方案--------------------
除了LS 几位说的情况之外 这样return一个char* 也是没什么问题的
char* func(char* p){
return p;
}
或者 return 的指针指向的是一个外部对象 也可以 
需要避免的是这样的做法
char* func(){
char ch;
return &ch;
}
------解决方案--------------------
chr *strcpy(char *dst,const char *src)
{
while(*dst++=*src++);
return dst;
}
这个好像是经典的字符串拷贝代码,就是返回字符指针的;
C 库里很多字符串函数,都是这个样子的!!

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有