社区
工具平台和程序库
帖子详情
关于函数返回指针、字符串的问题
ccwd002
2003-04-06 09:20:32
好像很容易在这个地方出错,如内存泄漏啊等等,有没有谁能总结一下,或者说提出一个好的编程方法
...全文
86
10
打赏
收藏
关于函数返回指针、字符串的问题
好像很容易在这个地方出错,如内存泄漏啊等等,有没有谁能总结一下,或者说提出一个好的编程方法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
husarb
2003-04-09
打赏
举报
回复
仔细看看林锐的高质量编程,里面有你想要的答案的
newhawk
2003-04-09
打赏
举报
回复
内存泄漏是个麻烦的问题,所以一般我尽可能的在栈上先分配好一块内存(定义一个字符数组即可),在作用域外编译器会自动销毁,收回内存,而慎用在堆上的内存动态分配,比如new。
还有两个问题值得注意
一个是字符串的初始化,这个很重要
还有一个是在涉及到指针时,要明白它只是一个4 bytes长的地址,用它前先要确认它指向的内存是否存在,是否合法,是否会覆盖其他的数据等
oyd
2003-04-09
打赏
举报
回复
鉴于你的问题,简单的声明为static char * ch=new char[100];
以后return ch就可以了。这样不需要回收,以后再调用函数也是用的同一块空间。
另外,用传入的指针做参数也是很好的选择,如
char * func(char * buf,int data)
{
...
return buf;
}
这样对于buf的释放就不用本函数关心,是调用者的事了
darkhawk
2003-04-07
打赏
举报
回复
建议以下方式:
1.return "ok"; 字符串ok会被编译器写入符号表中,所以,这样使用是安全的.
2.使用外部函数分配的空间.如void getvalue(char* sz, int size);其中sz是外部调用函数分配的空间.
3.使用全局变量.(建议不用)
4.在函数内部分配空间,记得在调用函数中释放.
char *getvalue()
{
return new char[100];
}
5.比4更好的方式是,传递一个动态分配的指针给函数.
void getvalue(char*& pBuff)
{
if(pBuff)
delete pBuff;
pBuff = new char [100];
}
不能使用的方法:
1.传递函数内部字符串变量(在某些情况下可能会好用,但是很危险).
char getvalue()
{
char sz[100];
return sz;
}
lplpzhuzhu
2003-04-07
打赏
举报
回复
尽量不要返回指针
但是可以使用返回参数是指针
即把要返回的指针作为一个函数的参数
这样比较安全
arya
2003-04-07
打赏
举报
回复
最简单的解决方案,不要返回指针,或者指向大对象的指针。相反,在调用函数里管理内存,然后把分配好内存的指针传递给被调用函数,由被调用函数来赋值。这是不那么优雅的做法。但是简单,高效,安全。
ccwd002
2003-04-07
打赏
举报
回复
看了高质量编程,没找到我想要的答案。
例如我想实现这样一个函数
char * Func(MyDataType data)
{
...//怎么声明字符串并返回呢?
//是用char *ch=new char(NUM)还是static char ch[NUM]还是其他方法
}
main()
{
MyDataType data;
char *p=Func(data);//可能会多次调用这个函数
cout<<p<<endl;
... //如果此后需要strcat(p,"...");会有问题吗
}
如何是好
robertnet
2003-04-06
打赏
举报
回复
就这么说也不能说出个什么道理来,还是自己多看书吧。
bugfree
2003-04-06
打赏
举报
回复
现在正是读, Effective c++ 的时候, 都完后相信你就不在迷茫, 他就像午后的一杯茶, 让你清新...
ckacka
2003-04-06
打赏
举报
回复
这个的确是个经典问题,就简单而普遍的解决办法和错误总结有本非常好的书
《高质量C++/C编程指南》- 林锐博士
这里是下载地址
http://www.vckbase.com/tools/listtools.asp?tclsid=201
你看了之后会大受裨益的!!!!
C语言
返回
指针
的
函数
,
指针
函数
,让一个
函数
返回
一个
字符串
返回
指针
的
函数
(
指针
函数
) 什么是
返回
指针
的
函数
一个
函数
可以
返回
一个整形值 字符型值 实型值 1、如果一个
函数
它的
返回
值是一个地址(是一个
指针
的话),这个
函数
是一个
返回
值是
指针
即
指针
函数
。 2、
返回
指针
的...
C语言
函数
返回
字符串
的方法
函数
返回
字符串
方法
字符串
指针
作为
函数
形参传入,并
返回
该
指针
使用malloc
函数
动态分配(注意内存释放)
返回
一个静态局部变量 static使用全局变量strcpy
函数
用法
字符串
指针
作为
函数
形参传入,并
返回
该
指针
#include ...
C语言
函数
如何
返回
字符串
有些时候我们需要
函数
返回
一个
字符串
但是总不能定义一个
字符串
函数
吧?所以,这里介绍几种方法让
函数
返回
字符串
。 方法一:全局变量 全局变量是最简单的方法,如例子: #include <stdio.h> char chName...
C语言:
函数
返回
字符串
的四种方法
转载连接:1.https://blog.csdn.net/turkeyzhou/article/details/6104135#comments2.https://www.cnblogs.com/qingergege/p/6496683.html四种
返回
字符串
的方法:1、 将
字符串
指针
作为
函数
参数传入,并
返回
该
指针
。...
C语言如何在
函数
中正确
返回
字符串
指针
或
字符串
数组
函数
返回
字符串
的四种方法:https://blog.csdn.net/luna_zhan/article/details/80433196 例如,定义一个
函数
,要求该
函数
能够
返回
一个指向
字符串
“I love C.”的
指针
并能在主程序中正确得到该
字符串
的内容。 ...
工具平台和程序库
24,854
社区成员
27,343
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章