标题:几种空间出错应该如何解释?
只看楼主
Meixu
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-10-12
 问题点数:0 回复次数:3 
几种空间出错应该如何解释?
char *str1;
char* str2=new char[5];
strcpy(str2,"ugly");
strcpy(str1,str2); //1、错:str1没有空间可储
strcpy(str2,"Hello");//2、错:str2空间不够
str2="Hello"; //3、原来的"ugly"空间脱钩,导致内存泄漏
第1种编译时就出错,这个可以理解。

第2、3种编译不出错,并且运行也正常,再加3个字符也不出错。不知道它是如何出错的,有谁知道的还请解释一下?
搜索更多相关主题的帖子: 解释 空间 
2006-11-17 13:14
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
得分:0 

可以编译运行,但是会造成内存泄漏
表面是看不出的,尝试释放str2的内存时就报错了


2006-11-17 16:54
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 

当碰到你越界的地址有东西用了
就错了


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-11-17 17:07
Meixu
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-10-12
得分:0 

原来是这样,谢谢两位的解释。
表面上看不出来,但是在内存里就能反映情况了。

理解:各占各的“地盘”,当它想超出自己的“地盘”时,其它的“地盘”又被别的占用着,问题就出现了。上面的只不过程序太小,问题才没出现。


多看、多练、多写
2006-11-17 19:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-103589-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.154252 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved