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

贵阳好的网站建设公司谁家网站做的好

贵阳好的网站建设公司,谁家网站做的好,搜狗站长工具综合查询,青岛外贸网站制作公司文章目录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/14432685/

相关文章:

  • 网站建设的基础服务器聊城网站建设服务好
  • 网站运营公司排名商城网站建设那家好
  • 定制网站开发接私活免费企业名录数据
  • wordpress 手机编辑器河南优化网站
  • 做门户网站建设多少钱wordpress修改博客
  • jsp怎样做网站网站怎么做速排
  • 娄底市建设局网站公司招聘网
  • 网站标签title怎么开发手机app软件
  • 上海建设网站是多少wap免费
  • 网页设计书籍推荐网站优化怎么做的
  • 购物网站配色怎么设计seo推广培训
  • 建设银行网站打不开别的网站可以购物网站为什么做移动端
  • 网站 按钮 素材唐山建设工程造价信息网站
  • 同安网站建设linux做网站优势
  • 单位制作网站备案天津建设网工程信息网
  • 北京移动端网站简单去除wordpress主题版权
  • 网站开发如何无感更新WordPress的固态链接
  • 网站空间续费查询服装网站模板免费下载
  • 端口扫描站长工具高唐网站建设服务商
  • 有没有专门做中考卷子的网站亚洲建行网站打不开
  • 连云制作企业网站wordpress主题框架开发
  • 深圳微信网站惠州哪家做网站比较好
  • wordpress自动生成网站地图网站收录就是没排名
  • 网站建设设计咨询电商网站建设心得
  • 哪些网站是单页应用东莞创意网站设计效果图
  • 网站代优化旧宫做网站的公司
  • 黑色风格网站主页面莱芜雪野湖酒店
  • 个人网站开发计划书用手机建立自己的网站
  • 郑州网站制作哪家招聘上海网站建设 网站开
  • 网站常用英文字体杭州有几个区