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

贵阳好的网站建设公司多钱网网站

贵阳好的网站建设公司,多钱网网站,那个网站做的刀比较好,抖音app下载文章目录1、动态内存管理2、内存管理方式operator new operator delete3、new和delete的实现原理1、动态内存管理 C兼容C语言关于内存分配的语法#xff0c;而添加了C独有的东西。 //int* p1 (int*)malloc(sizeof(int));int* p1 new int;new是一个操作符#xff0c;C不再需… 文章目录1、动态内存管理2、内存管理方式operator new operator delete3、new和delete的实现原理1、动态内存管理 C兼容C语言关于内存分配的语法而添加了C独有的东西。 //int* p1 (int*)malloc(sizeof(int));int* p1 new int;new是一个操作符C不再需要强转类型。如果要开辟多个 //int* p2 (int*)malloc(sizeof(int) * 7);int* p2 new int[7];这个new不只是C的动态开辟方式还有独特的点。同malloc一样new没有初始化但它对于自定义类型的处理要更好。C的free就是delete。 //int* p1 (int*)malloc(sizeof(int));int* p1 new int; //int* p2 (int*)malloc(sizeof(int) * 7);int* p2 new int[7];delete p1;delete[] p2;写一个类 class A { public:A(int a 0):_a(a){cout 构造 this endl;}~A(){cout 销毁 this endl;} private:int _a; };A* pp3 (A*)malloc(sizeof(A));free(pp3);A* p3 new A(1);delete p3; malloc只是开空间free只是释放空间而new会调用构造函数和析构函数。 2、内存管理方式 new也可以初始化 int* p1 new int(10);int* p2 new int[10];int* p3 new int[10] {1, 2, 3, 4};一个是初始化一个变量一个是初始化一个数组总共10个元素第三个则是指定初始化这里初始化了4个元素。 但不能交叉使用用mallocdelete系统会抽查错误查到编译器就会出现奇怪的错误。 operator new operator delete operator new 和operator delete是 系统提供的全局函数new在底层调用operator new全局函数来申请空间delete在底层通过operator delete全局函数来释放空间。 实际上它们不是new 和 delete的重载函数。on函数调用了malloc如果调用失败就会执行用户提供的空间不足应对措施如果用户提供该措施 就继续申请否则就抛异常而od函数就是一个free在最终free前它会检查代码。 所以实际上它们就是malloc和free的封装。 int* p1 (int*)operator new(sizeof(int));int* p2 (int*)malloc(sizeof(int));malloc失败时会返回空而on会返回异常。 3、new和delete的实现原理 对于内置类型new和malloc无区别但对自定义类型有区别。new[]和delete[]实现的是连续空间的操作。 new的逻辑是先调用operator new再malloc再调用构造函数。delete的逻辑是先调用析构函数再调用operator delete也就是相当于free。 new/delete 和 malloc/free有不同的实现机制尽量不交叉使用以免出现不可控的错误。 new T[N]的原理 调用operator new[]函数在operator new[]中实际调用operator new函数完成N个对 象空间的申请在申请的空间上执行N次构造函数 delete[]的原理 4. 在释放的对象空间上执行N次析构函数完成N个对象中资源的清理 5. 调用operator delete[]释放空间实际在operator delete[]中调用operator delete来释 放空间 new一个数组编译器内部会多开四个字节的空间来存储元素个数这是在手动写了析构函数的情况下如果是自动析构函数那么编译器就会评估一下是否需要这四个字节比如类里没有对资源进行管理那么就不需要析构函数也就不会多开4个字节。 malloc/free和new/delete的共同点是都是从堆上申请空间并且需要用户手动释放。不同的地 方是 malloc和free是函数new和delete是操作符malloc申请的空间不会初始化new可以初始化malloc申请空间时需要手动计算空间大小并传递new只需在其后跟上空间的类型即可 如果是多个对象[]中指定对象个数即可malloc的返回值为void*, 在使用时必须强转new不需要因为new后跟的是空间的类型malloc申请空间失败时返回的是NULL因此使用时必须判空new不需要但是new需 要捕获异常申请自定义类型对象时malloc/free只会开辟空间不会调用构造函数与析构函数而new 在申请空间后会调用构造函数完成对象的初始化delete在释放空间前会调用析构函数完成 空间中资源的清理 结束。
http://www.hkea.cn/news/14449583/

相关文章:

  • 合肥建设网站哪家好注册新公司的流程
  • ks刷粉网站推广马上刷如何自己制作游戏软件
  • 搜索网站制作教程金山区网站制作
  • 程序员 修电脑 做网站随机关键词生成器
  • 海南中小企业网站建设南城微网站建设
  • 怎样看网站的建设时间网站ftp查询
  • 营销网站建设企划案例12380网站建设情况汇报
  • 阳泉住房和城乡建设厅网站百度seo发帖推广
  • 网站首页做多大分辨率wordpress 下雪插件
  • 视频网站开发视频教程北京网站建设百度排名
  • 宁波公司网站开发网络销售平台推广
  • 做普通网站公司吗四川建设网中标候选人公示
  • 做全景效果图的网站网站建设公司怎么找业务
  • 搜搜提交网站怎样弄微信公众号
  • 网站如何做3d产品展示丝芭传媒有限公司
  • 程序员为什么35岁就不能干?合肥市网站优化
  • 网站开发的软 硬件环境标准请求做女朋友的网站源码
  • 怎么自己做网站的推广杭州编程培训机构排名
  • 重庆万州网站建设多少钱iis 一个网站多个应用程序
  • 网站维护的基本内容有哪些信息展示网站系统
  • 天津市城乡建设部网站首页免费企业名录数据
  • 韶关最新消息做网站分为竞价和优化
  • 网站建设服务哪家好 价格多少钱网站规划建设实训
  • 个人电脑做网站服务器教程泰安人才招聘网最新招聘2023
  • 娄底网站建设79ld吴桥网站建设价格
  • 网页设计网站开发需要什么软件网站建设开发全包
  • 什么网站有教做详情页6wordpress
  • 网站开发 加密保护深圳网站开发专业
  • 做平面免费接单网站我想建设网站
  • 宿松网站建设wordpress怎么多用户