C/C++ New与Delete
来源:互联网 发布:百电通 软件下载 编辑:程序博客网 时间:2024/06/05 09:57
先来看两段小程序:
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
- 【C++】new delete & new[] delete[]
- c++-new与delete运算符
- C++new与delete以及空指针
- C ++的new、delete
- [C++]new/delete
- C++:new和delete
- new和delete【C++】
- c++new and delete
- {c++}delete与delete[]
- c/c++ 堆与栈 malloc/free与new/delete
- c++operator new/new operator、operator delete/delete operator的区别与联系
- C++new和delete重载
- [C++]定制new和delete
- C++new delete 实现原理
- C++-关键字new和delete
- C++【堆内存的动态分配与释放(new/delete)】
- 【C++】动态内存管理(new,delete,new[],delete[])
- iPhone Network 编程
- mina2实例
- C#博文收集
- Adapter 模式 - Class Adapter
- Asterisk Registry(registe an account to local asterisk server)
- C/C++ New与Delete
- 关于maven的不错的文章
- 编写大容量和健壮的服务器系列—处理IOCP资源释放
- wpf Image动态加载图片终极解决办法
- SSH2 Step by Step- Step 3 Struts2和Hibernate的整合
- Oracle数据字典
- What's stdcall, cdecl, etc....
- OMF是什么?
- SQL判断某个表、存储过程、触发器、函数、某个字段是否存在