码迷,mamicode.com
首页 > 其他好文 > 详细

delete 与 delete []

时间:2017-05-07 22:05:10      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:copy   array   lan   line   new   ice   释放   use   第一个   

/*
 Module:		delete与delete[]的区别.cpp
 Notices:		Copyright (c) 2017 Landy Tan
*/


#include <iostream>
using namespace std;


////////////////////////////////////////////////////////////////


class CT
{
public:
	inline CT(){
		cout << "CT()" << endl;
	}

	inline ~CT(){
		cout << "~CT()" << endl;
	}
};


////////////////////////////////////////////////////////////////


int main()
{
	const unsigned short nArrayLen = 5;
	int *pnArray = new int[nArrayLen]{0};
	delete pnArray;
	// *(pnArray + 1) = 100;	程序崩溃。因为这一块内存已经被释放了
	// delete []pnArray;		对于普通数据类型而言,delete与delete[]效果是一样的
	pnArray = NULL;
	
	////////////////////////////////////////////////////////////////


	CT *c = new CT[nArrayLen];
	// delete c;	释放的是第一个元素的。而不是全部
	delete []c;		// 释放所有的元素
	c = NULL;
	system("pause");
	return 0;
}


////////////////// End of File //////////////////////////////////

 

 

结论:

  1、对于普通数据类型无论是delete或是delete[],其功能都是一样的。

  2、如果是自定义数据类型,delete释放的是下标为0的首元素的内存空间,而不是整个数组。delete[]释放的才是整个数组的空间!

  3、

delete 与 delete []

标签:copy   array   lan   line   new   ice   释放   use   第一个   

原文地址:http://www.cnblogs.com/LandyTan/p/6822369.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!