简介
在C语言中内存的分配与释放使用的函数是malloc与free。C++中有了类和对象,我们常用new和delete来新建和释放对象。至于new和delete的背后到底是什么,这篇文章做了个简单的记录。
new对象过程
假设我们定义了一个类Complex,下面的代码是新建一个Complex对象的过程代码。
|
|
编译器会转为:
|
|
上面代码中operator new叫操作符,其实是函数用来内存分配的,调用了malloc函数,源代码如下:
|
|
上述代码中如果内存分配成功,指针p不为空会指向分配出的内存首地址,分配不成功,返回空指针执行循环体。
delete对象过程
释放掉pc所指对象的代码是delete pc。那么编译器会把这句代码转为:
|
|
operator delete实际的操作是调用free来释放内存
|
|
总结
以上就是对C++内存分配释放中new/delete函数的说明,后面还会写文章对标准库allocator进行一定的分析。
声明
若有错误,欢迎讨论。严禁抄袭,仅用于学习。