当前位置: 首页 > wzjs >正文

在哪里找人做公司网站域名备案做电影网站

在哪里找人做公司网站,域名备案做电影网站,传统网站和手机网站的区别,网站做的最好的公司C中 new/delete 与 malloc/free 的异同详解 在 C 开发中,动态内存管理是重中之重!new/delete 和 malloc/free 都是用来动态申请和释放内存的,但它们有本质的区别。今天我们就来彻底搞懂它们的区别,避免内存泄漏和 undefined beha…

C++中 new/delete 与 malloc/free 的异同详解

在 C++ 开发中,动态内存管理是重中之重!new/deletemalloc/free 都是用来动态申请和释放内存的,但它们有本质的区别。今天我们就来彻底搞懂它们的区别,避免内存泄漏和 undefined behavior!💡


1. 相同点

都是动态内存管理:在堆(heap)上分配内存,需要手动释放,否则会导致内存泄漏。
返回指针:申请成功时返回内存地址,失败时 malloc 返回 NULLnew 抛出 std::bad_alloc 异常(除非用 nothrow 版本)。


2. 核心区别(重点!面试常考!)

特性new / delete (C++)malloc / free ©
语言C++ 关键字C 标准库函数
内存计算自动计算大小(new int需手动计算(malloc(sizeof(int))
初始化调用构造函数(new) / 析构函数(delete仅分配/释放内存,不调用构造/析构
返回类型返回具体类型指针(int*返回 void*,需强制转换
失败处理默认抛异常(bad_alloc返回 NULL
重载可重载 operator new不可重载
内存不足处理可自定义 new_handler只能检查返回值
数组支持new[] / delete[]需手动计算数组大小

3. 关键细节(必看!)

(1)初始化问题

  • new 会调用构造函数,malloc 不会:
    class A {
    public:A() { std::cout << "A constructed!" << std::endl; }~A() { std::cout << "A destroyed!" << std::endl; }
    };A *p1 = new A;      // 调用构造函数
    A *p2 = (A*)malloc(sizeof(A));  // 不调用构造函数!
    free(p2);  // 不调用析构函数!
    delete p1; // 调用析构函数
    
    ⚠️ 如果用 malloc 申请类对象,对象不会被初始化,可能导致崩溃!

(2)内存释放问题

  • delete 会调用析构函数,free 不会:
    int *p1 = new int(10);
    delete p1;  // 正确释放  int *p2 = (int*)malloc(sizeof(int));
    free(p2);   // 正确释放  // ❌ 错误示范:
    int *p3 = new int[10];
    free(p3);   // 未调用析构函数,可能导致内存泄漏(如果数组元素是对象)
    
    🚨 绝对不能混用!new 的内存必须用 delete 释放,malloc 的内存必须用 free 释放!

(3)数组处理

  • new[]delete[] 用于动态数组:
    int *arr1 = new int[10];  // 分配 10 个 int
    delete[] arr1;            // 正确释放  int *arr2 = (int*)malloc(10 * sizeof(int));
    free(arr2);               // 正确释放  
    
    ⚠️ 如果用 delete 释放 new[] 分配的数组,行为未定义(UB)!

4. 如何选择?

C++ 代码一律用 new/delete(更安全,支持构造/析构)
C 代码或与 C 库交互时用 malloc/free
避免混用!否则可能导致内存泄漏或崩溃


5. 总结(背下来!)

场景推荐方式
C++ 单对象new / delete
C++ 数组new[] / delete[]
C 代码malloc / free
兼容 C 和 C++malloc + 手动初始化(不推荐)

📌 面试高频问题:

  • newmalloc 的区别?(答:构造/析构、类型安全、异常处理)
  • deletefree 的区别?(答:是否调用析构函数)
  • 能否用 free 释放 new 的内存?(答:绝对不能!)
http://www.dtcms.com/wzjs/817722.html

相关文章:

  • 宁波专业网站推广平台咨询物联网平台层
  • 宜春制作网站公司哪家好阿里巴巴有几个网站是做外贸的
  • 蔬菜网站建设系统开发过程中设计代码的原则为
  • 网站视频播放器用什么做的discuz模板制作教程
  • 网站建设书籍2013年的推广是什么意思
  • 网站公司好做吗网址大全2345电脑版下载
  • 网站建设宣传ppt模板工程业绩在哪个平台上查询
  • 网站flash工作压力大怎样缓解焦虑情绪
  • 领优惠卷的网站怎么做wordpress 后台 logo
  • 外贸推广的网站海外营销方案
  • 云盘网站建设做外包胡it网站
  • 网站建设案例包括哪些网站建设工资郑州
  • 摄影网站策划书做资源网站需要什么软件
  • 视频网站 外链小程序源码怎么导入
  • 网站顶部怎么做新浪链接郑州网站建设网站开发
  • 阜宁县住房和城乡建设局网站桂林两江四湖门票多少钱
  • 如何建设网站挣钱大丰市市城乡建设局网站
  • 婚恋网站 备案条件网站全局变量
  • 苏州沧浪区做网站企业所得税税率多少
  • 名校长工作室网站建设福田蒙派克价格及图片
  • c2c的网站名称和网址网页微信登录不了提示为了安全考虑
  • 怎样说服老板做网站3d房子模型设计软件
  • 江西威乐建设集团有限公司企业网站虚拟主机免费领取
  • 自己做的网站手机不能看微信小程序打不开什么原因
  • 尚品中国多年专注于高端网站建设无障碍环境建设 网站
  • 镇江市建设工程安全监督站网站wordpress仿微信订阅主题
  • 网站域名证书佛山建筑设计院有限公司官网
  • 可以接单做网站的软件开发网站能赚多少钱
  • 怎么查看网站空间wordpress 文章样式
  • 重庆商城网站建设地址百度集团网站建设方案