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

上海金工建设集团有限公司网站快站登录

上海金工建设集团有限公司网站,快站登录,深圳网站托管公司,免费jianzhannew/delete 与 malloc/free 的区别? 分配内存的位置 malloc是从堆上动态分配内存new是从自由存储区为对象动态分配内存。自由存储区的位置取决于operator new的实现。自由存储区不仅可以为堆,还可以是静态存储区,这都看operator new在哪里为…

new/delete 与 malloc/free 的区别?

  1. 分配内存的位置
    1. malloc是从上动态分配内存
    2. new是从自由存储区为对象动态分配内存。自由存储区的位置取决于operator new的实现。自由存储区不仅可以为堆,还可以是静态存储区,这都看operator new在哪里为对象分配内存
  2. 是否可以被重载
    1. opeartor new 、operator delete 可以被重载
    2. malloc、free则不能重载
  3. 内存分配
    1. malloc内存分配成功后返回void*,然后再强制类型转换为需要的类型
      1. malloc内存分配失败后返回 NULL
    2. new操作符分配内存成功后返回与对象类型相匹配的指针类型;因此new是符合类型安全的操作符
      1. new分配内存失败则会抛异常 std::bad_alloc
      2. 如果加上std::nothrow关键字`,UserInfo* info = new (std::nothrow) UserInfo; // new 就不会抛出异常而是会返回空指针
  4. 分配内存的大小的计算
    1. 使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算
    2. malloc则需要显式地指出所需内存的尺寸
  5. 使用场景
    1. new/delete 适用于C++对象,它们会自动处理对象的构造和析构。
    2. malloc/free 更通用,可以在C++中使用,也可以在C中使用,但需要手动管理对象的构造和析构。
// 使用 malloc 分配内存 并 强制类型转换
UserInfo* user = static_cast<UserInfo*>(malloc(sizeof(UserInfo)));// 构造对象
new (user) UserInfo("Alice", 25);// 使用对象指针调用成员函数
std::cout << "User's age: " << user->getAge() << std::endl;// 手动调用析构函数
user->~UserInfo();// 释放内存
free(user);
http://www.yayakq.cn/news/468852/

相关文章:

  • 手表二级市场网站佛山自己网站建设
  • 做游戏模型挣钱的网站wordpress 3.5下载
  • 公司做网站自己可以做.wordpress
  • 肥城网站建设电话用php做网站流程
  • 网站资讯板块的搭建江苏州 网站制作
  • 兼职做Ppt代抄论文的网站个人网站建设流程
  • 上海做网站公司做网站的公司有哪些wordpress5回复后查看
  • 做网站界面多少钱houzz室内设计
  • 做京东一样的网站网络服务公司注册官网
  • 网站微信收款二维码怎么做wordpress 精简
  • 罗村网站制作公司科技馆网站建设背景
  • dede网站漏洞网站建设空间什么意思
  • 网站设计制作服务好态度好东莞市网站建设制作设计平台
  • 外贸做的社交网站有哪些企业网站属于广告吗
  • 网站品牌形象设计怎么做成立网站有什么要求
  • ps在线网站宁津网页设计
  • 怎样建设自己网站石家庄网络推广建站
  • 济南高新区 网站建设公司网站备案后 换服务器
  • 网站权重怎么做的阿里巴巴官网下载手机版
  • 网站底部友情链接代码学it学费大概多少钱
  • 金沙网站怎么做代理wordpress添加广告位
  • 建立网站链接结构的基本方式是做短租有哪些网站
  • 网站开发语言有phprails开发的网站开发
  • 无极领域付费网站百度收录批量查询工具
  • 做英文网站费用多少ie浏览器打不开建设银行网站
  • 学建网站要多久wordpress ajax 分页插件
  • 公司网站恶意评价前端网页设计师
  • 手机商城网站案例开发公司组织机构图
  • 花店网站建设课程设计论文学了网站建设的心得体会
  • 小公司没网站罗湖城网站建设