C/C++中,我们经常对指针进行动态内存分配,当使用完毕后,则需要进行释放。
在C和C++中,内存的动态分配与释放有不同的方式
C:
C中没有对象的概念,所以内存分配只是简单的分配内存空间,释放亦然
使用malloc()函数分配,使用free()函数释放
C++:
C++中引入了对象的概念,使用new与delete关键字来进行内存操作。当使用new时,除了执行malloc()相关的内存分配以外,还会调用对象的构造函数;当使用delete时,除了执行free()相关的内存释放以外,还会调用对象的析构函数。
在C++中,对象指针即可指向一个对象,也能指向一个对象数组。当指向对象数组时,需要使用new[]和delete[]进行操作。执行new[]时,会调用每个数组成员的构造函数;执行delete[]时,会调用每个数组成员的析构函数。
使用new创建对象数组时,写作type *p = new type[NUM],而释放时可以写作delete p[]或delete[] p
但是,无论是free还是delete,当释放指针时,仅释放指针所指的内存空间与