社区
C++ Builder
帖子详情
简单的问题:怎么返回字符串
gloom
2002-07-24 04:18:47
形如
char* function(char* str);
的函数,如果要对str进行操作后返回新的串,怎么返回啊?一般我要存储新的串都是建一新变量(长度不定),如char* myStr=new char[LEN];如果直接将此新串返回,那myStr还没来得及delete,岂不是会造成内存泄漏?难道要分配一块固定的可能的最大内存块如char[2048]?
注:不能返回AnsiString,
...全文
27
12
打赏
收藏
简单的问题:怎么返回字符串
形如 char* function(char* str); 的函数,如果要对str进行操作后返回新的串,怎么返回啊?一般我要存储新的串都是建一新变量(长度不定),如char* myStr=new char[LEN];如果直接将此新串返回,那myStr还没来得及delete,岂不是会造成内存泄漏?难道要分配一块固定的可能的最大内存块如char[2048]? 注:不能返回AnsiString,
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gloom
2002-08-01
打赏
举报
回复
TO: airspace(笨鸟)
hailulu_wang(没啥)
因为我要把这个串返回,把以不能提前delete,
TO: pp616(傻小子)
不是在所有的情况下都可以操作参数的。
我自己的找到一个方法:
用char* str="";创建一个空串,再用strcpy()将new 创建的串复制到str.将str delete掉,返回str就可以了。
这个问题我回复了很多次都不能回复成功,一直拖到现在。
WieldWolf
2002-08-01
打赏
举报
回复
关注
kingcaiyao
2002-08-01
打赏
举报
回复
这样:
char* Function(char *str)
{
......
String sResult;
sResult=StrPas(str);
return sResutl.c_str();
....
}
gloom
2002-07-26
打赏
举报
回复
我知道方法了就是创建一个空串,char* str="";再将要返回的内容用strcpy复制到这个串里,删除其它串,将这个串返回就可以了,
//为什么我老是不能回复。
gloom
2002-07-25
打赏
举报
回复
CSDN现在怎么这么奇怪,我十次有八次不能回复啊
gloom
2002-07-25
打赏
举报
回复
TO: airspace(笨鸟)
我想返回这个串,所以不能先delete,可以也不能等返回吧后再来delete
TO: hailulu_wang(没啥)
char* function(const char* str)
{
int len=strlen(str);
char* MyStr=new char[len+7];
strcpy(MyStr,"TestStr");
strcpy(MyStr+7,str);
return MyStr;
}
这时就会发生资源泄漏,因为MyStr没有被删除,
不过我找到了解决方法,就是再用一个空串
char* function(const char* str)
{
int len=strlen(str);
char* MyStr=new char[len+7];
strcpy(MyStr,"TestStr");
strcat(MyStr+7,str);
char* Str="";
strcpy(Str,MyStr);
delete[] MyStr;
return Str;
}
这样不会发生资源泄漏,但在strcpy时,系统会重新给原来的空串Str分配内存。
TO: pp616(傻小子) 很多情况,你不能对参数进行操作的。
Behard
2002-07-24
打赏
举报
回复
我觉得 pp616 的方法可行
而且在我学习 TC 时,我的老师都是这样告诉我们的
Behard
2002-07-24
打赏
举报
回复
我觉得 pp616 的方法可行
而且在我学习 TC 时,我的老师都是这样告诉我们的
pp616
2002-07-24
打赏
举报
回复
你直接最你的参数str操作。做完后直接把str的指针返回不就可以了吗?干什么要再分配内存呢???
hailulu_wang
2002-07-24
打赏
举报
回复
char *s;
char *t="ok";
s=function(t);
delete s;
这样是不会造成内存泄漏的,因为函数内部用临时变量比如说char *temp来分配内存,返回时将temp的指针传给s,函数将自动释放在其中定义的指针temp,而在函数中分配的内存由s负责释放:delete s;
所以这样是不会造成内存泄漏的。这个原则正是corba传递变长度参数时使用的内存管理原则。一定没问题的。
gloom
2002-07-24
打赏
举报
回复
我是想将它返回啊,返回后还怎么delete啊?
airspace
2002-07-24
打赏
举报
回复
在你使用完mystr后再delete应该可行
java 方法过长_String:java:常量
字符串
过长的另一种思路解决方法
java:常量
字符串
过长,其实本质就是你的值太长太大,String的长度有限,过大肯定是接受不了,比如一个人最多吃两个馒头,你给他吃十个馒头吃不了出现这个
问题
,我本想快速解决,只要能赋值给
字符串
,然后我能进行下一步就行,结果不行,网上查到什么改成eclipse的编译方式之类的也不行,所以我这边就换一种思路了。需求:有一个非常大的文本,json格式的,我需要把json数据给导入到数据库里面,json...
c语言能
返回
字符串
吗,C语言实现
返回
字符串
函数的四种方法
C语言实现
返回
字符串
函数的四种方法前言C语言
返回
字符串
函数共有四种方式,分别如下:使用堆空间,
返回
申请的堆地址,注意释放函数参数传递指针,
返回
该指针
返回
函数内定义的静态变量(共享)
返回
全局变量下面来看看详细的介绍其实就是要
返回
一个有效的指针,尾部变量退出后就无效了。使用分配的内存,地址是有效char *fun(){char* s = (char*)calloc(100, sizeof(char*)...
字符串
最小周期
1.
问题
描述 给定一个长度为n的
字符串
S,如果存在一个
字符串
T,重复若干次T能够得到S,那么,S叫做周期串,T叫做S的一个周期。如:
字符串
abababab是周期串,abab、ab都是它的周期,其中,ab是它的最小周期。设计一个算法,计算S的最小周期。 2.
问题
分析 首先我们会很容易想到最
简单
的暴力求解:假设
字符串
S的长度为 len,S的最小周期的长度为 i ,
字符串
S表示为S
c语言能
返回
字符串
吗,C语言中函数
返回
字符串
的四种方法
在讨论着四种方法以前,首先要对函数有一个
简单
的认识,不管是在形实结合时,仍是在return语句
返回
时,都有一个拷贝的过程。你传进来的参数是个值,天然函数在工做以前要把这个值拷贝一份供本身使用,你传进来的是个地址,函数也就会拷贝该地址供本身使用。一样return
返回
时,若是
返回
一个值,函数会将该值拷贝一份以提供给主调函数使用,
返回
的是一个指针(也就是地址),天然拷贝的就是一个地址,供主调函数使用。程...
c#语言输出
字符串
长度,关于C#:计算
字符串
长度的不同方法
对我的一个答案的评论让我有些困惑。 尝试计算将两个
字符串
连接到一个新的内存块需要多少内存时,据说使用snprintf优于strlen,如下所示:size_t length = snprintf(0, 0,"%s%s", str1, str2);// preferred over:size_t length = strlen(str1) + strlen(str2);我可以在此背后得到一些推理吗? ...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章