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

零陵做网站建立网站的公司平台

零陵做网站,建立网站的公司平台,wordpress 设置网站目录,wordpress页头图片比例文章目录 new 和 delet 概念new 和 delet 的使用new与 delete 底层原理malloc/free和new/delete的区别new / opera new / 构造函数 之间的关系定位new表达式(placement-new)内存泄漏内存泄漏分类如何对待内存泄漏 new 和 delet 概念 new和delete是用于动态内存管理的运算符用于在堆上分配和释放内存。new运算符用于在堆上分配内存并调用对象的构造函数进行初始化。 new 和 delet 的使用 注意 圆括号是给类型的构造函数传参方括号号是确定动态开辟该类型空间的大小。new操作符开辟的空间必须由delet释放new[]开辟的空间必须由delet[]释放 。new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数 new与 delete 底层原理 new和delete操作符通过调用 operator new与operator delete 全局函数实现功能 可以重载全局的operator new和operator delete函数但是不能重载new和delete运算符注意“operator new”是一个函数的名称而不是对new进行了重载的意思 operator new和operator delete函数的内部逻辑大致遵从以下形式/逻辑 cpp void* operator new(std::size_t size) {void* ptr std::malloc(size); // 使用标准库函数 malloc 分配内存if (ptr nullptr) // 内存分配失败{throw std::bad_alloc(); // 抛出 bad_alloc 异常}return ptr; }void operator delete(void* ptr) {// 自定义内存释放逻辑// ...free(ptr); }malloc/free和new/delete的区别 malloc/free和new/delete的共同点是都是从堆上申请空间并且需要用户手动释放。不同的地方是 malloc和free是函数new和delete是操作符malloc申请的空间不会初始化new可以初始化malloc申请空间时需要手动计算空间大小并传递new只需在其后跟上空间的类型即可如果是多个对象[]中指定对象个数即可额malloc的返回值为void*, 在使用时必须强转new不需要因为new后跟的是空间的类型malloc申请空间失败时返回的是NULL因此使用时必须判空new不需要但是new需要捕获异常申请自定义类型对象时malloc/free只会开辟空间不会调用构造函数与析构函数而new在申请空间后会调用构造函数完成对象的初始化delete在释放空间前会调用析构函数完成空间中资源的清理 new / opera new / 构造函数 之间的关系 new[] / delete[] operator new[] / operator delete[] 多次构造函数 operator new[] / operator delete[] 多次调用operator delete / operator new operator new 成功 operator new malloc函数 / 自定义重载操作 malloc函数 operator new 失败 operator new 抛异常/ 抛异常 自定义重载操作 operator delet free函数 / 自定义重载操作 free函数 new operator new 函数 构造函数 (注意先后顺序) delete 析构函数 operator delet 函数 (注意先后顺序) new / new[] 失败时会抛异常 定位new表达式(placement-new) new (pointer) Type [initializer];pointer是一个指向已分配内存的指针Type是要构造的对象类型initializer是可选的初始化列表。 定位new表达式placement new是一种特殊的new表达式用于在已分配的内存地址上构造对象。它允许我们在指定的内存位置上创建对象而不是在堆上动态分配内存。 使用 class A { public:A(int a 0): _a(a){cout A(): this endl;}~A(){cout ~A(): this endl;} private:int _a; };int main() {/* p1现在指向的只不过是与A对象相同大小的一段空间还不能算是一个对象因为构造函数没有执行*/A* p1 (A*)malloc(sizeof(A));// // 定位new/replacement new// 注意如果A类的构造函数有参数时此处需要传参new(p1)A; p1-~A();free(p1);// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! A* p2 (A*)operator new(sizeof(A));new(p2)A(10);p2-~A();operator delete(p2);return 0; }内存泄漏 内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失而是应用程序分配某段内存后因为设计错误失去了对该段内存的控制因而造成了内存的浪费。 内存泄漏的危害长期运行的程序出现内存泄漏影响很大如操作系统、后台服务等等出现内存泄漏会导致响应越来越慢最终卡死。 内存泄漏分类 堆内存泄漏(Heap leak) 堆内存指的是程序执行中依据须要分配通过malloc / calloc / realloc / new等从堆中分配的一块内存用完后必须通过调用相应的 free或者delete 删掉。假设程序的设计错误导致这部分内存没有被释放那么以后这部分空间将无法再被使用就会产生Heap Leak。 系统资源泄漏 指程序使用系统分配的资源比方套接字、文件描述符、管道等没有使用对应的函数释放掉导致系统资源的浪费严重可导致系统效能减少系统执行不稳定。 如何对待内存泄漏 有良好的编程习惯使用内存泄漏检测工具有一些专门的工具可以帮助检测内存泄漏例如Valgrind、AddressSanitizerASan、LeakSanitizerLSan等。这些工具可以在运行时检测程序中的内存泄漏并给出相应的报告和调试信息。重载 operator new 和 operator delete通过重载全局的 operator new 和 operator delete 函数可以跟踪内存的分配和释放情况。可以在这些函数中记录分配的内存块信息并在程序结束时检查是否有未释放的内存块。使用智能指针使用智能指针如std::shared_ptr、std::unique_ptr可以自动管理内存的释放避免手动释放内存的疏忽。智能指针使用引用计数或独占所有权的方式来管理资源确保在不再需要时正确释放内存。编写测试用例编写全面的测试用例覆盖程序的各个功能模块和代码路径以确保内存的正确分配和释放。通过测试用例的执行结果来检查是否有内存泄漏的情况。代码审查和静态分析工具进行代码审查特别关注内存分配和释放的逻辑。同时使用静态分析工具如Clang静态分析器、Cppcheck等来检查代码中潜在的内存泄漏问题。 注 内存泄漏检测工具只是有概率查处错误 。
http://www.w-s-a.com/news/281547/

相关文章:

  • 某企业电子商务网站建设网站开发实验结论
  • 自己做的网站突然打不开杭州哪些做网站公司好
  • 株洲专业建设网站免费cms内容管理系统
  • 网上建立网站赚钱网站建设方案书纯文字
  • 专业网站设计哪家好it外包合同模板
  • 个人网站备案都需要什么中小企业服务网
  • 佛山网站建设哪个在公司网站投简历该怎么做
  • 八戒网站做推广老域名全部失效请拿笔记好
  • iss服务器网站建设甘肃建设厅网站执业注册中心
  • 域名访问网站 过程网站 免费 托管运营
  • 下单的网站建设教程wordpress php7.1
  • 爱网站查询怎么做网站的图片跳转
  • 阿里云建站百度收录吗北京的设计公司排名
  • 网站制作方案包含哪些内容布吉网站建设方案
  • 吉林省建设安全信息网站宜宾市建设工程质量监督站网站
  • 镇江网站建设远航网络帝国cms 网站地图 自定义
  • 金融网站模板源代码net网站是国际域名吗
  • 北京高端网站建设价格企业网络托管公司
  • 规范门户网站建设没有网站可以做域名解析吗
  • pc 手机网站源码织梦网站修改教程视频教程
  • 江苏省建设厅副厅长网站济南网络建站模板
  • 工信部网站备案举报做网站竞争大吗
  • 网站建设经费管理注册了域名怎么做网站
  • 哪个着陆页网站福田做网站的公司
  • 网站备案完成后该如何做宁波公司网站建设价格
  • 标识标牌网站怎么做手机网站开发session
  • 怎样建设网站是什么样的广州做和改版网站的公司
  • 世界网站制作帮助做职业规划的网站
  • wordpress 查看站点ppt素材大全免费图片
  • 网站做弹幕广告有什么兼职做it的网站