char* str=new char[10];
...
...
delete [] str;
上面的delete语句可否用
str=0;
代替?
举个例子比较一下:
例如从图书馆借书:
delete就是把书还给图书馆;
=NULL就是在借书证上盖个“已还”的章子。
还书而不盖章,我想你会不同意,下次图书馆向你要书,你从哪弄去。
盖章而不还书,图书馆也肯定不同意,要不你便宜占大了,图书馆几天下来就没书了。
operator new 的功能是在堆数据区申请一块内存区块,然后将栈变量就是指针指向这块
内存区块的首地址。明白拉没?
你说的每一个new配一个像str=0的语句,那么请问你申请内存干吗用?所以这根本不可行!
delete 的作用是释放这块内存区块,并且把指针指向一个安全的地址。
如果不delete掉这个内存,仅仅将str指向NULL,那么等到程序结束,这个内存区块就不会
交还给操作系统,产生了所谓的“内存泄漏”。