C/C++ New与Delete (小例子)
2014-06-19 16:51
134 查看
转自:/article/2876060.html
先来看两段小程序: 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++中new和delete,delete[]的匹配问题(转载)
- C++学习笔记之1:使用相同形式的new和delete
- 关于C++当中new和delete操作符重载的一些感想
- C++中的delete—— C++中的new之姊妹篇
- c++中new和delete的使用方法
- c++ new and delete
- new、delete、指向连续空间的指针、数组、空间释放、空间申请[C++][内存管理]
- [收藏]C++ Tips(2)--new,delete
- [收藏]C++ Tips(2)--new,delete
- C++中令人混淆的3个new和delete
- 浅析C++中的 new 与 delete 操作
- C++内存管理基础之new & delete
- C++中有了malloc/free,为什么还需要new/delete?
- 关于C++中的new 和 delete
- malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存
- 浅析C++中的 new 与 delete 操作
- C++中new和delete的实质--代码解释
- C++的new和delete功能小窥
- C++箴言:使用相同形式的new和delete
- C++中new(delete)和malloc(free)的常见问题