zoukankan      html  css  js  c++  java
  • delete 与 delete []

    /*
     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、

  • 相关阅读:
    读取声音文件的方法
    在MAC电脑上抓取iphone数据包的方法
    Mac+IPAD上使用wireshark抓包
    2020/7/24
    2020牛客多校第二场01,05题
    2020/7/23
    2020/7/22
    2020/7/20
    2020/7/19
    2020/7/18
  • 原文地址:https://www.cnblogs.com/LandyTan/p/6822369.html
Copyright © 2011-2022 走看看