首页 > 编程语言 > 详细

C/C++ New与Delete (小例子)

时间:2014-06-20 15:13:08      阅读:303      评论:0      收藏:0      [点我收藏+]

转自:http://blog.csdn.net/chenzujie/article/details/7011639

 

 

先来看两段小程序:
1)、
#include <iostream.h>
#include <String.h>
void main(void)
{
char *str1 = "just have fun";
char *str2 = "happy day";
char *sTmpPtr = new char[255];
char *sMyStrPtr = new char[255];


strcpy(sTmpPtr, str1);
strcpy(sMyStrPtr, str2);
delete  sMyStrPtr ;
strcpy(sMyStrPtr, sTmpPtr);
cout << sMyStrPtr << endl;
}
2)、
#include <iostream.h>
#include <String.h>
void main(void)
{
char *str1 = "just have fun";
char *str2 = "happy day";
char *sTmpPtr = new char[255];
char *sMyStrPtr = new char[255];


strcpy(sTmpPtr, str1);
strcpy(sMyStrPtr, str2);
delete  sMyStrPtr ;
sMyStrPtr = sTmpPtr;

cout << sMyStrPtr << endl;
}
第一段程序的输出会是乱码,因为delete sMyStrPtr,删除了sMyStrPtr所指向的内存空间,但作为一个指针sMyStrPtr依然存在,却没有指向内存,因此在strcpy里会执行*strDest++=*strSrc++,但strDest没有指向,所以*strDest++=*strSrc++并没有达到复制的效果,输出就乱码了。
在第二段程序,delete之后,又把sTmpPtr赋值给了sMyStrPtr,sMyStrPtr有了指向,指向sTmpPtr的内存空间,所以可以正常输出。

 

C/C++ New与Delete (小例子),布布扣,bubuko.com

C/C++ New与Delete (小例子)

原文:http://www.cnblogs.com/qbmiller/p/3797045.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!