无锡谁做网站好,深圳网站设计有限公司,网站规划步骤,如何配置网站服务器一、new一个对象数组
如果我们想在堆内存上创建一个对象数组#xff0c;可以这么写#xff1a; Complex * pca new Complex[3]; 主要做三件事#xff1a; #xff08;1#xff09;申请一块内存#xff0c;足够放置三个Complex对象。 #xff08;2#xff09;执行三次…一、new一个对象数组
如果我们想在堆内存上创建一个对象数组可以这么写 Complex * pca new Complex[3]; 主要做三件事 1申请一块内存足够放置三个Complex对象。 2执行三次Complex的无参构造函数。 3返回首地址指针。 最后的内存长这个样子 最前面有一个cookie后面会重点讲解。主要作用包括记录申请的总字节数量记录数组中的对象个数。
二、delete一个对象数组
对于对象数组的delete通常采用的是 delete [] pca; 作用是 1根据cookie中记录的对象个数依次执行析构函数。上述例子中就是执行三次。 2回收掉这一块内存。
那如果是delete pca没有[]呢 那么不影响这一个数组本身的内存回收但是析构函数只会执行一次。可能会导致内存泄露。
那么如何判断需不需要delete []呢这要看类里面也没有指针。如果有指针了那么需要在析构函数里面delete不调用析构函数直接回收内存就会导致内存泄漏如std::string。 像上述我们的例子Complex成员变量全是基本数据类型就可以不delete []直接delete就可以。再比如 int * a new int [10]; 都没有析构函数的概念直接delete a就足够了。