首页 > 其他分享 >55.malloc申请的存储空间能用delete释放吗?

55.malloc申请的存储空间能用delete释放吗?

时间:2023-07-04 13:22:33浏览次数:32  
标签:malloc 55 free 能用 存储空间 delete

55.malloc申请的存储空间能用delete释放吗?

不能,malloc /free主要为了兼容C,new和delete 完全可以取代malloc /free的。

malloc /free的操作对象都是必须明确大小的,而且不能用在动态类上。

new 和delete会自动进行类型检查和大小,malloc/free不能执行构造函数与析构函数,所以动态对象它是不行的。

当然从理论上说使用malloc申请的内存是可以通过delete释放的。不过一般不这样写的。而且也不能保证每个C++的运行时都能正常。

参考资料来源:

阿秀

标签:malloc,55,free,能用,存储空间,delete
From: https://www.cnblogs.com/codemagiciant/p/17525503.html

相关文章

  • 103.new和delete的底层实现
    1.重载new和delete尽管我们说能够“重载new和delete",但是实际上重载这两个运算符与重载其他运算符的过程大不相同。要想真正掌握重载new和delete的方法,首先要对new表达式和delete表达式的工作机理有更多了解。当我们使用一条new表达式时://new表达式string*sp=newstring(......
  • 54.new和delete的实现原理, delete是如何知道释放内存的大小的?
    54.new和delete的实现原理,delete是如何知道释放内存的大小的?1、new简单类型直接调用operatornew分配内存;而对于复杂结构,先调用operatornew分配内存,然后在分配的内存上调用构造函数;对于简单类型,new[]计算好大小后调用operatornew;对于复杂数据结构,new[]先调用operatornew[]......
  • 戴尔g15 5520 换硬盘和迁移系统
    换硬盘和迁移系统相关步骤如下:g155520硬盘推荐换硬盘先试试戴尔官方的硬盘克隆拆机教程_小秋拆机硬盘分区注:系统方面,也可考虑系统重装,windows官网有提供下载,用U盘制作启动盘,进行重装即可。......
  • 让IIS支持.NET Web Api PUT和DELETE请求
    前言    有很长一段时间没有使用过IIS来托管应用了,今天用IIS来托管一个比较老的.NETFx4.6的项目。发布到线上后居然一直调用不同本地却一直是正常的,关键是POST和GET请求都是正常的,只有PUT和DELETE请求是有问题的。经过一番思考忽然想起来了IIS默认情况下拒绝处理PUT和DELETE......
  • MYSQL笔记:删除操作Delete、Truncate、Drop用法比较
    1、执行速度比较Delete、Truncate、Drop关键字都可以删除数据drop>truncate>delete2、原理方面2.1deletedelete属于数据库DML操作语言,只会删除数据表中的记录,会执行事务,执行的时候也会触发触发器。InnoDB数据库引擎中,执行delete操作只会给删除的记录打上了删除标记,并不会真正删除......
  • 8.new-delete操作与malloc-free的操作异同
    相同点●都可用于内存的动态申请和释放●new和malloc都可以分配指定大小的内存块,并且分配的内存都在堆上。●new和malloc的结果都返回一个指向已分配内存的指针。●都允许使用字面量作为参数来分配内存。不同点●前者是C++运算符,后者是C/C++语言标准库函数●new自动计算要......
  • mysql处理delete后不释放磁盘空间
    myisam:optimizetabletable_nameinnodb:altertabletable.nameengine='innodb’1.问题描述在使用mysql的时候有时候,可能会发现尽管一张表删除了许多数据,但是这张表表的数据文件和索引文件却奇怪的没有变小。这是因为mysql在删除数据(特别是有Text和BLOB)的时候,会留下许多的数......
  • 10.malloc和new的区别?
    malloc和free是标准库函数,支持覆盖;new和delete是运算符,支持重载。malloc仅仅分配内存空间,free仅仅回收空间,不具备调用构造函数和析构函数功能,用malloc分配空间存储类的对象存在风险;new和delete除了分配回收功能外,还会调用构造函数和析构函数。malloc和free返回的是void类型指针......
  • 9.new和delete是如何实现的?
    new的实现过程是:首先调用名为operatornew的标准库函数,分配足够大的原始为类型化的内存,以保存指定类型的一个对象;接下来运行该类型的一个构造函数,用指定初始化构造对象;最后返回指向新分配并构造后的的对象的指针delete的实现过程:对指针指向的对象运行适当的析构函数;然后通过调用......
  • 11.既然有了malloc-free,C++中为什么还需要new-delete呢?直接用malloc-free不好吗?
    malloc/free和new/delete都是用来申请内存和回收内存的。在对非基本数据类型的对象使用的时候,对象创建的时候还需要执行构造函数,销毁的时候要执行析构函数。而malloc/free是库函数,是已经编译的代码,所以不能把构造函数和析构函数的功能强加给malloc/free,所以new/delete是必不可少......