实例详解new和delete 内存管理
2011-08-22 15:33
387 查看
上一篇文章简单介绍了malloc/free和new/delete的区别,当然,我建议大家多用new/delete;
下面上一段代码让大家更好的来理解这个应用
程序运行的结果:
很诡异的是,我delete操作,为什么依然还是垃圾呢?
下面上一段代码让大家更好的来理解这个应用
///////////////String.h/////////////////////////////////////////////////////////// #ifndef STRING_H_ #define STRING_H_ #include <iostream> using namespace std; class String { private: char * str; //存储数据 int len; //字符串长度 public: String(const char * s); //构造函数 String(); // 默认构造函数 ~String(); // 析构函数 friend ostream & operator<<(ostream & os,const String& st); }; #endif
////String.cpp #include "stdafx.h" #include <string> #include <iostream> #include "String.h" using namespace std; String::String(const char *s) { len=strlen(s); str=new char[len+1]; strcpy(str,s); } String::String() { len=0; str=new char[len+1]; str[0]='"0'; } String::~String() { cout<<"将完成删除操作;"<<str<<'"n'<<endl; delete []str; cout<<str<<endl; } ostream &operator <<(ostream &os,const String &st) { os<<st.str; return os; }
// testString.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include "String.h" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { String temp("wangchenglin 我爱你"); cout<<temp<<endl; //system("PAUSE"); return 0; }
程序运行的结果:
很诡异的是,我delete操作,为什么依然还是垃圾呢?
相关文章推荐
- 动态内存管理详解:malloc/free/new/delete/brk/mmap
- 动态内存管理详解:malloc/free/new/delete/brk/mmap(介绍的很明白)
- 动态内存管理---new&delete
- C++动态内存分配(new/new[]和delete/delete[])详解
- 动态内存管理详解:malloc/free/new/delete/brk/mmap
- 动态内存管理详解:malloc/free/new/delete/brk/mmap
- new和delete管理内存
- 动态管理内存之new和delete
- C++的动态内存管理,new/delete
- 动态内存管理详解:malloc/free/new/delete/brk/mmap
- 动态内存管理---new&delete
- C/C++内存分配方式,栈区堆区 new/delete/malloc/free
- linux free命令详解和使用实例(查看内存使用率)
- 用实例证明dll中new的内存不能在exe中释放
- ARC内存管理机制详解
- 模拟new[]和delete[]操作符开辟内存空间及释放内存空间过程
- 全面介绍Windows内存管理机制及C++内存分配实例(六):堆栈
- 通过重载new与delete运算符避免向系统重复申请内存从而提高程序运行效率的办法
- 7.关于申请与释放内存new &amp; delete
- C/C++ 内存分配:malloc/calloc/realloc/free和new/delete