社区
C语言
帖子详情
这个小程序有问题吗?
HKer_007
2002-09-06 07:25:03
#include ......
char * str;
char * getstr()
{
str = new char [100];
strcpy(str, "This is a test.");
return str;
}
void main()
{
char * p;
p = new char [100];
p = getstr;
delete [] p;
}
...全文
55
9
打赏
收藏
这个小程序有问题吗?
#include ...... char * str; char * getstr() { str = new char [100]; strcpy(str, "This is a test."); return str; } void main() { char * p; p = new char [100]; p = getstr; delete [] p; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
glassshark
2002-09-07
打赏
举报
回复
//这样可以,不过在不同的可见域里申请和释放堆空间不是一个好习惯,建议修改getstr函数,将其所需的内存由调用者来申请和释放。
#include ......
char * str;
char * getstr()
{
str = new char [100];
strcpy(str, "This is a test.");
return str;
}
void main()
{
char * p;
p = getstr;
delete [] p;
}
ningzhiyu
2002-09-06
打赏
举报
回复
p = getstr;应该是p = getstr();吧
vixkywx(vicky) 说的对
程序共申请了200的char大小的空间,只是释放了其中的100个
造成100的leak。
char *q;
q=p;
p = getstr();
printf("%ld,%ld,%ld\n",p,q,p-q);
会发现p-q的值是104。他们的地址是不一样的。
liushmh
2002-09-06
打赏
举报
回复
看来,我还是没有考虑全面。;(
vixkywx
2002-09-06
打赏
举报
回复
#include ......
char * str;
char * getstr()
{
str = new char [100]; //申请了str
strcpy(str, "This is a test.");
return str;
}
void main()
{
char * p;
p = new char [100]; //申请了p
p = getstr; //p指向的空间已经无法访问了
delete [] p; //p和str是同一地址,所以p和str都不能用了
//原来指向p的内存没释放
}
liushmh
2002-09-06
打赏
举报
回复
哦,请原谅我拙劣的表现
p = getstr;//改为strcpy(p,str);
由于全局变量在程序结束后会自动释放内存
又由于delete []p;
这样会导致str指向的内存被释放两遍。
liushmh
2002-09-06
打赏
举报
回复
sorry,我看错了,好像没有错误。
zongta
2002-09-06
打赏
举报
回复
不需要给p 分配100个空间
liushmh
2002-09-06
打赏
举报
回复
char * getstr()
{
str = new char [100];
strcpy(str, "This is a test.");
return str;//返回了局部变量,内存已经释放了
}
p = getstr();//导致此处有问题,p指向了一块释放的内存。
puppet
2002-09-06
打赏
举报
回复
有问题
p = new char [100];//内存没有释放
p = getstr;
50道JAVA基础编程练习题
【程序 1】 题目:古典
问题
:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析:这道题目考察了数列的概念,...
DirectX修复工具 V3.3标准 绿色版
可以在Windows8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中直接运行(其他系统如果安装了.NET Framework 4.0也可以运行这个特别版的程序)。 本程序的官方博客地址为:...
DirectX修复工具 V3.5在线修复 绿色版 免安装版
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便...可以在Windows8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中直接运行(其他系统如果安装了.NET Framework 4.0也可以运行这个特别版的程序)。
去水印
小程序
好做吗?赚钱吗?
今天我们来说说去水印
小程序
,有的人已经利用去赚了很多钱,我自己呢?其实我自己做的
小程序
一天能达到800吧!那么今天就来讲下,去水印到底怎么去赚钱,好不好搭建! 我们先讲一下怎么做吧!只是一个简单的讲述,...
微信
小程序
开发一定要服务器么,该怎么选择
小程序
服务器?
我们碰到的一个常见的
问题
就是微信
小程序
需要服务器吗?其实,这主要是看
小程序
的具体应用。 1)如果是使用微信门店
小程序
、微信小店
小程序
,以及静态的
小程序
(只有前端),那么是不需要购买域名和服务器。或者使用...
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章