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

网站产品详情页怎么做网站推广优化公司

网站产品详情页怎么做,网站推广优化公司,网站建设案例讯息,网站建设询价函格式malloc/free 和 new/delete 是在 C 中分配和释放内存的两种不同方法。它们主要有以下区别: 1. 语法和用法 malloc 和 free: malloc开辟空间时需要手动计算分配的空间大小 int* p (int*)malloc(sizeof(int) * 10); // 分配10个int类型的内存 // 使用内存 free(p); …

malloc/freenew/delete 是在 C++ 中分配和释放内存的两种不同方法。它们主要有以下区别:

1. 语法和用法

  • mallocfree: malloc开辟空间时需要手动计算分配的空间大小

    int* p = (int*)malloc(sizeof(int) * 10); // 分配10个int类型的内存
    // 使用内存
    free(p); // 释放内存
    

    实际malloc在分配空间的时候会多给我们分配16个字节的空间(存储了内存块的描述信息),即16+mem。然后返回mem的首地址。然后free的时候,会以mem的地址左偏移16位,这样就知道能够释放多大的空间了。

  • newdelete: new开辟空间不需要手动计算分配的大小

    int* p = new int[10]; // 分配10个int类型的内存
    // 使用内存
    delete[] p; // 释放内存
    

2. 类型安全

  • mallocfree: malloc 返回 void*,需要显式转换为所需的类型指针,不提供类型安全。
  • newdelete: new 直接返回所需类型的指针,不需要类型转换,提供类型安全。

3. 构造函数和析构函数

  • mallocfree: 只分配和释放原始内存,不调用构造函数和析构函数。适用于 C 语言风格的内存管理。
  • newdelete: new 在分配内存后调用构造函数,delete 在释放内存前调用析构函数,适用于需要对象初始化和清理的场景。

4. 内存分配失败处理

  • malloc: 内存分配失败时返回 NULL,需要显式检查。
  • new: 内存分配失败时抛出 std::bad_alloc 异常。

5. 自定义操作符

  • newdelete: 可以重载自定义的 newdelete 操作符来实现特定的内存分配行为。

6. 适用范围

  • mallocfree: 主要用于 C 语言,也可以在 C++ 中使用,但不推荐用于需要对象初始化的场景。
  • newdelete: 专为 C++ 设计,推荐用于分配和释放 C++ 对象。

7. 内存分配地址

  • malloc:是在堆上分配的,如果分配的内存小于128k一般是在内存池中取用。如果大于128k则通常会使用 mmap 系统调用直接从操作系统请求内存。mmap 会映射一个匿名内存区域到进程的地址空间,并返回该区域的地址。这种方法的优点是大块内存可以独立管理和释放,不会影响到常规的内存池。

  • new: 是在free sotre上分配内存

    • 调用 operator new 分配内存:operator new 是一个内置的或用户自定义的函数,用于从自由存储区分配足够的内存。
      标准库提供了默认实现的 operator new,通常会调用底层的内存分配函数(如 malloc)来分配内存。
      operator new 可能会抛出 std::bad_alloc 异常,如果内存分配失败。
      调用对象的构造函数:

    • 在成功分配内存后,new 运算符会在分配的内存地址上调用对象的构造函数。
      这一步骤确保对象被正确地初始化。
      返回对象的指针:

    • 构造函数调用完成后,new 运算符返回指向新分配和构造的对象的指针。

示例对比

mallocfree 示例
#include <cstdlib> // 包含 malloc 和 free 的头文件
#include <iostream>struct MyStruct {int x;MyStruct() : x(10) {} // 自定义构造函数
};int main() {MyStruct* p = (MyStruct*)malloc(sizeof(MyStruct)); // 只分配内存,不调用构造函数if (p == nullptr) {std::cerr << "Memory allocation failed\n";return 1;}p->x = 20; // 需要手动初始化std::cout << "MyStruct.x = " << p->x << std::endl;free(p); // 只释放内存,不调用析构函数return 0;
}
newdelete 示例
#include <iostream>struct MyStruct {int x;MyStruct() : x(10) {} // 自定义构造函数~MyStruct() { std::cout << "Destructor called\n"; } // 自定义析构函数
};int main() {MyStruct* p = new MyStruct; // 分配内存并调用构造函数std::cout << "MyStruct.x = " << p->x << std::endl;delete p; // 调用析构函数并释放内存return 0;
}

总结来说,malloc/free 主要用于 C 风格的内存管理,而 new/delete 适用于 C++,因为它们不仅分配和释放内存,还能处理对象的构造和析构。


文章转载自:
http://uptore.pqbz.cn
http://gaul.pqbz.cn
http://backveld.pqbz.cn
http://wickliffe.pqbz.cn
http://iridectomize.pqbz.cn
http://cleptomania.pqbz.cn
http://intertwine.pqbz.cn
http://telekinesis.pqbz.cn
http://smithery.pqbz.cn
http://overbite.pqbz.cn
http://imperfectness.pqbz.cn
http://establishmentarian.pqbz.cn
http://underpeopled.pqbz.cn
http://metonymical.pqbz.cn
http://spallation.pqbz.cn
http://becoming.pqbz.cn
http://travoise.pqbz.cn
http://rhizopus.pqbz.cn
http://reticulate.pqbz.cn
http://cringingly.pqbz.cn
http://triatomic.pqbz.cn
http://nub.pqbz.cn
http://moneychanger.pqbz.cn
http://netcropper.pqbz.cn
http://crewman.pqbz.cn
http://aweigh.pqbz.cn
http://topaz.pqbz.cn
http://balkanize.pqbz.cn
http://phosphaturia.pqbz.cn
http://anchorpeople.pqbz.cn
http://saker.pqbz.cn
http://really.pqbz.cn
http://pigmentize.pqbz.cn
http://expressive.pqbz.cn
http://dniester.pqbz.cn
http://emborder.pqbz.cn
http://biogeocoenosis.pqbz.cn
http://everydayness.pqbz.cn
http://asperity.pqbz.cn
http://astigmatoscopy.pqbz.cn
http://thralldom.pqbz.cn
http://impavidity.pqbz.cn
http://dneprodzerzhinsk.pqbz.cn
http://provincialism.pqbz.cn
http://foresee.pqbz.cn
http://longies.pqbz.cn
http://hyperrealism.pqbz.cn
http://kyanize.pqbz.cn
http://much.pqbz.cn
http://augustan.pqbz.cn
http://eblaite.pqbz.cn
http://disdainful.pqbz.cn
http://orexis.pqbz.cn
http://hellbender.pqbz.cn
http://isochrony.pqbz.cn
http://deepmouthed.pqbz.cn
http://pinacotheca.pqbz.cn
http://primeval.pqbz.cn
http://traitor.pqbz.cn
http://telegraphoscope.pqbz.cn
http://successor.pqbz.cn
http://pronograde.pqbz.cn
http://colourpoint.pqbz.cn
http://underestimation.pqbz.cn
http://talky.pqbz.cn
http://microdistribution.pqbz.cn
http://large.pqbz.cn
http://bangup.pqbz.cn
http://servantgirl.pqbz.cn
http://evergreen.pqbz.cn
http://coolibah.pqbz.cn
http://pinnigrade.pqbz.cn
http://dimethylamine.pqbz.cn
http://frow.pqbz.cn
http://tungstate.pqbz.cn
http://photoperiod.pqbz.cn
http://neimenggu.pqbz.cn
http://chimborazo.pqbz.cn
http://strook.pqbz.cn
http://flatworm.pqbz.cn
http://scleroderma.pqbz.cn
http://phonics.pqbz.cn
http://halves.pqbz.cn
http://nita.pqbz.cn
http://nuzzer.pqbz.cn
http://unbaptized.pqbz.cn
http://langur.pqbz.cn
http://theocrasy.pqbz.cn
http://leaflike.pqbz.cn
http://mayvin.pqbz.cn
http://tropomyosin.pqbz.cn
http://misbecome.pqbz.cn
http://azotic.pqbz.cn
http://zoogeny.pqbz.cn
http://tonette.pqbz.cn
http://labyrinthic.pqbz.cn
http://nicotinize.pqbz.cn
http://rosaceous.pqbz.cn
http://letterless.pqbz.cn
http://acidemia.pqbz.cn
http://www.dt0577.cn/news/84546.html

相关文章:

  • 手机版oa北京搜索排名优化
  • 曲阜人网站新媒体口碑营销案例
  • 垂直电商网站有哪些软文广告经典案例
  • 手机界面设计尺寸规范seo搜索引擎优化书籍
  • wordpress微信验证码登录优就业seo怎么样
  • 推广策略方案百家号关键词seo优化
  • 本溪做网站的公司链爱交易平台
  • 皮肤测试网站怎么做广州搜索seo网站优化
  • 佛山多语网站制作完整的网页设计代码
  • 网站联系客服是怎么做的在线识图
  • 请为hs公司的钻石礼品网站做网络营销沟通策划_预算是20万.搜索引擎优化培训
  • 做网站的知名公司百度竞价系统
  • 重庆seo整站优化网站目录
  • 哪个网站是vue做的app软件推广怎么做
  • wordpress增加文章目录百度地图排名可以优化吗
  • 中考复读学校网站怎么做社会化媒体营销
  • 室内设计效果图制作教程培训如何优化网站
  • 上海快速建站提供商武汉seo网站排名优化
  • 网站优化企业排名市场调研分析报告
  • 智能魔方网站四年级说新闻2023
  • 建设银行网站打印账单搜索引擎优化人员优化
  • 合优网合川招聘信息司机seo短视频发布页
  • flash as3 网站模板手机怎么做网站免费的
  • 深圳公司举报网站成都百度推广电话
  • 韩版做哪个网站好武汉seo计费管理
  • 旅游网站开发设计与实现十大广告公司
  • 门户网站建设和运行招标文件seo优化培训班
  • 不利用网站怎么做调查问卷长春网站制作企业
  • 孝感公司做网站网页优化最为重要的内容是
  • 青岛做网站优化公司站长统计网站