请教函数返回值问题:

fromv 2002-10-17 02:20:44
如何在一个函数里返回char *数据;
即:
char * Funtion(...)
{
char *str = new char[16];

.....
return ; // 在这里返回str的值
}
...全文
26 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hello_wyq 2002-10-18
  • 打赏
  • 举报
回复
to wgh166(wgh) ( )
我觉得你的做法就变成了,多线程不安全了。

是不是可以考虑使用如下方法?

typedef enum
{
OK = 0,
NOENOUGHMOMERY = 1,
...//其他的各种情况
} STATUS;

STATUS Create(char**ppChar, .../*其他的参数*/)
{
STATUS s = OK;

*ppChar = new char[16];
if (!(*ppChar))
s = NOENOUGHMOMERY;
// initialize
...
return s;
}

STATUS Destroy(char* pChar, .../*其他的参数*/)
{
STATUS s = OK;

// do something
...
delete[] pChar;
return s;
}

这样配对的话,是不是要好一些呢?

invalid 2002-10-17
  • 打赏
  • 举报
回复
我觉得还是作为参数,传入指针比较好。
牧牛人软件 2002-10-17
  • 打赏
  • 举报
回复
根据我在unix上C经验,这样可能返回不保险。应加static
char * Funtion(...)
{
static char *str = new char[16];

.....
return str;
}
bluebird97073 2002-10-17
  • 打赏
  • 举报
回复
char *c = Funtion(...);//调用函数Function,并将返回的指针赋给指针变量c
...//使用c
delete[] c;释放c指向的内存,即函数Funtion中创建的内存

注意你创建的是数组~所以要用 delete[]


Libran 2002-10-17
  • 打赏
  • 举报
回复
返回的指针总会用到的,用完了释放该指针就行了
比如:
char *c = Funtion(...);//调用函数Function,并将返回的指针赋给指针变量c
...//使用c
delete c;释放c指向的内存,即函数Funtion中创建的内存
huzhangyou 2002-10-17
  • 打赏
  • 举报
回复
同意
呵呵
kingfish 2002-10-17
  • 打赏
  • 举报
回复
可以在外面释放

delete []p;
fromv 2002-10-17
  • 打赏
  • 举报
回复
str动态分配了内存,没有释放,会不会产生内存泄漏?
bluebird97073 2002-10-17
  • 打赏
  • 举报
回复
char * Funtion(...)
{
char *str = new char[16];

.....
return str; // 在这里返回str的值
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧