free&delete&delete[]

最近一些工作里需要处理些内存的东东,需要把delete,free,delete[]分清楚。

 

跟了下几个汇编

delete汇编化是:

  • call destructor.
  • call delete(void*)->free+一些判断

 

free就是free

 

delete[]是

  • 调相应数量的destructor,
  • delete(void*)

so:

  • 所以如果是POD的话,错调了delete(应该调用delete[])并不会造成内存泄漏,一般的内存泄露是来源与destructor少掉了时候。
  • 对于POD的话,不用在意delete[]和delete调用的正确与否,甚至直接free也可以

下面是c++的delete和free

 

 

 

在C++中,`free`和`delete`都是用来释放内存的函数。它们的作用是将之前使用`malloc`或`new`分配的内存块释放,以便可以重新使用该内存块。`free`是C语言中的函数,用于释放通过`malloc`分配的内存。而`delete`则是C++中的关键字,用于释放通过`new`运算符分配的内存。 在示例代码中,可以看到使用了`delete`关键字来释放动态分配的内存。根据变量类型的不同,可以使用不同的形式的`delete`。对于数组类型的指针,应使用`delete[]`来释放内存,而对于非数组类型的指针,则使用`delete`进行释放。示例代码中展示了对不同类型的指针进行释放的示例。 需要注意的是,在使用`delete`释放内存时,应确保释放的指针是通过相应的`new`运算符进行动态分配的,否则可能会出现未定义的行为。另外,对于数组类型的指针,一定要使用`delete[]`进行释放,否则可能会导致内存泄漏或者其他错误。 总结来说,`free`和`delete`都是用来释放内存的函数,只是在使用上有一些细微的差别。`free`是C语言中的函数,用于释放通过`malloc`分配的内存,而`delete`是C++中的关键字,用于释放通过`new`运算符分配的内存。在使用`delete`时,要根据指针的类型选择适当的形式进行释放,对于数组类型的指针应使用`delete[]`进行释放。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [C++ 语言学习 day02 (linux ) delete 函数 面对对象的类,构造函数,析构函数,单列模式](https://blog.csdn.net/she666666/article/details/126492098)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [ctf-pwn tc和smallbin的doublefree利用](https://blog.csdn.net/qq_38154820/article/details/118773473)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值