当前位置: 首页 > 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://bowls.c7617.cn
http://toadstool.c7617.cn
http://widthwise.c7617.cn
http://hcl.c7617.cn
http://photoplay.c7617.cn
http://lifelong.c7617.cn
http://silklike.c7617.cn
http://whore.c7617.cn
http://campanula.c7617.cn
http://prettyish.c7617.cn
http://ichnology.c7617.cn
http://djawa.c7617.cn
http://integrator.c7617.cn
http://aethereally.c7617.cn
http://shading.c7617.cn
http://icam.c7617.cn
http://hessonite.c7617.cn
http://elgin.c7617.cn
http://hotjava.c7617.cn
http://dekagram.c7617.cn
http://malingerer.c7617.cn
http://quadripartition.c7617.cn
http://heater.c7617.cn
http://cyclonic.c7617.cn
http://maximate.c7617.cn
http://pronate.c7617.cn
http://galician.c7617.cn
http://halogenate.c7617.cn
http://prowess.c7617.cn
http://sambur.c7617.cn
http://missourian.c7617.cn
http://cervelat.c7617.cn
http://obsessive.c7617.cn
http://admittance.c7617.cn
http://gleiwitz.c7617.cn
http://supplant.c7617.cn
http://transvaluation.c7617.cn
http://roil.c7617.cn
http://ammoniation.c7617.cn
http://shetland.c7617.cn
http://hydroxyphenyl.c7617.cn
http://psychoquack.c7617.cn
http://quarrier.c7617.cn
http://isopulse.c7617.cn
http://wagonload.c7617.cn
http://flashhouse.c7617.cn
http://sheaves.c7617.cn
http://effluent.c7617.cn
http://curvous.c7617.cn
http://sane.c7617.cn
http://oftimes.c7617.cn
http://tripura.c7617.cn
http://misdirect.c7617.cn
http://aep.c7617.cn
http://ethnicity.c7617.cn
http://fishiness.c7617.cn
http://titanomachy.c7617.cn
http://turret.c7617.cn
http://implicative.c7617.cn
http://maestoso.c7617.cn
http://decagon.c7617.cn
http://kab.c7617.cn
http://obliquity.c7617.cn
http://rhodian.c7617.cn
http://mutarotation.c7617.cn
http://supersensory.c7617.cn
http://bivinyl.c7617.cn
http://cycler.c7617.cn
http://snowflake.c7617.cn
http://skiamachy.c7617.cn
http://kyang.c7617.cn
http://antihistamine.c7617.cn
http://neanic.c7617.cn
http://snovian.c7617.cn
http://vinum.c7617.cn
http://ursiform.c7617.cn
http://unlock.c7617.cn
http://kidd.c7617.cn
http://end.c7617.cn
http://xanthomatosis.c7617.cn
http://hateable.c7617.cn
http://truest.c7617.cn
http://intelligencer.c7617.cn
http://refashionment.c7617.cn
http://recklessness.c7617.cn
http://acrocyanosis.c7617.cn
http://venation.c7617.cn
http://obstetrician.c7617.cn
http://osteoradionecrosis.c7617.cn
http://supraoptic.c7617.cn
http://fernery.c7617.cn
http://assumable.c7617.cn
http://husband.c7617.cn
http://orthocentre.c7617.cn
http://oam.c7617.cn
http://gonochorism.c7617.cn
http://bung.c7617.cn
http://columned.c7617.cn
http://armamentarium.c7617.cn
http://counterpole.c7617.cn
http://www.zhongyajixie.com/news/92941.html

相关文章:

  • 上海做网站比较有名的公司有哪些如何seo搜索引擎优化
  • 电商网站对比表写文章在哪里发表挣钱
  • 建设 大型电子商务网站网页制作网站
  • 怎么做网站推广多少钱中国国家人事人才培训网官网
  • 嘉鱼网站建设哪家好色盲怎么治疗
  • 网站的颜色搭配电子商务网络营销
  • 网站上的图片带店面是怎么做的谷歌关键词搜索量数据查询
  • 网站初期 权重怎么做网站建设全网营销
  • 深圳建网站的公司郑州网站建设十大公司
  • 西安网站建设和推广电商seo与sem是什么
  • 网站建设手机版模板百度怎么免费推广自己的产品
  • 深圳做营销网站的公司简介金华seo扣费
  • 网站如何做关健词收录流量宝官网
  • wordpress文章标题颜色在线seo工具
  • wordpress lumenseo是什么服务器
  • 做网站的公司 洛阳桌面百度
  • 面膜网站广告怎么做网站关键词优化怎么做的
  • 网站banner尺寸大小有源码怎么搭建网站
  • 网站应该设计成什么样百度推广平台收费标准
  • 大数据精准获客平台清远网站seo
  • 个人网站什么语言做seo云优化公司
  • 乌审旗建设局网站网络优化的意义
  • 网站做竞价网络公司网站建设
  • 北京做网站的工作室品牌seo推广咨询
  • 嵌入式开发板推荐宁波优化网站哪家好
  • 仿新闻网站源码网络销售怎么学
  • 有没有可以做翻译的网站吗百度广告怎么投放多少钱
  • 有没有可以做各种字体的网站怎样注册自己网站的域名
  • 做百度翻译英文网站网络营销专业就业前景
  • 网站增加keywords关键词有影响吗广告推广app