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

手机怎么制作网站wordpress add_role

手机怎么制作网站,wordpress add_role,贷款客户大数据精准获客,专业做淘宝网站公司【小梦C嘎嘎——启航篇】内存管理小知识~#x1f60e; 前言#x1f64c;malloc/calloc/realloc的区别#xff1f;new 与 deletenew与delete要找好搭档才能保证万无一失 new 与 delete的内部实现细节是怎么样的呢#xff1f;#xff1f;#xff1f;new 的内部实现细节dele… 【小梦C嘎嘎——启航篇】内存管理小知识~ 前言malloc/calloc/realloc的区别new 与 deletenew与delete要找好搭档才能保证万无一失 new 与 delete的内部实现细节是怎么样的呢new 的内部实现细节delete的内部实现细节 经典问题malloc/free 与new/delete 的区别是什么抛异常的基本使用 小知识点cout 流插入 不能打印出char*指针的地址 总结撒花 博客昵称博客小梦 最喜欢的座右铭全神贯注的上吧 作者简介一名热爱C/C算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主 博主小留言哈喽各位CSDN的uu们我是你的博客好友小梦希望我的文章可以给您带来一定的帮助话不多说文章推上欢迎大家在评论区唠嗑指正觉得好的话别忘了一键三连哦 前言 哈喽各位友友们我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下 都是精华内容可不要错过哟 malloc/calloc/realloc的区别 这是一个经典的问题有时面试也会这么问你。我的理解是malloc可以向堆区动态申请一段连续的空间realloc 的话主要是完成扩容操作其扩容又可以分为两种方式1.原地扩容 2.异地扩容。异地扩容的代价比较高因为它要在堆区去找一块能够满足需求的空间然后将原来的数据内容拷贝到新申请的空间里面然后再把原来申请的空间释放掉。而calloc的话就是在malloc的基础上能够将自己申请的空间进行初始化操作。以上就是他们三者的区别与联系啦~ new 与 delete 在C语言中我们知道有malloc realloccalloc 这些可以在堆区中申请资源可以用free释放掉堆上开辟的空间。那为什么C还自己搞一套呢不要问C嘎嘎祖师爷那么设计一定有他的道理接下来我就来分析一下为什么。 new与delete要找好搭档才能保证万无一失 由于我们场景需求的多样因此new与delete产生了不同的搭档方式以满足我们的需求。简单概括为 一个变量空间的申请与释放new 变量类型(val) ----- delete 变量名一个变量空间的申请与释放new 变量类型【变量个数】(val) ----- delete【】 变量名 #includeiostream using namespace std;class A { public:A(int a 0):_a(a){cout A(int a 0) endl;}~A(){cout ~A() endl;} private:int _a; };int main() {int* a new int(10);cout *a endl;delete a;A* ptr1 new A[10];delete[] ptr1;return 0; } new与delete要找好搭档才能保证万无一失如果随意搭档可能会出错的。例如下面这个场景就会导致运行错误。 class A { public:A(int a 0):_a(a){cout A(int a 0) endl;}~A(){cout ~A() endl;} private:int _a; };int main() {int* a new int(10);cout *a endl;A* ptr1 new A[10];delete ptr1;//delete[] ptr1;return 0; } 因此我们在使用的时候一定要根据场景的需求去选择new 与 delete 的 匹配搭档。 new 与 delete的内部实现细节是怎么样的呢 new 的内部实现细节 其实new 之所以可以申请空间并且完成初始化操作其实其内部是调用了 malloc 和 构造函数来实现的。那它们又是怎么调用malloc和构造的呢内部实现的细节是怎么样的 其实这里使用了封装的方法其内部实现是写了一个operator new函数这个函数里面封装了malloc函数的调用以及抛异常的实现。因此operator new函数就完成了new的开空间和如果new失败了会抛异常的功能。然后调用new编译器会自动调用构造函数进行对象的初始化操作。 delete的内部实现细节 其实delete之所以可以释放空间并且完成对象资源清理的工作其实其内部是调用了free函数 和 析构函数来实现的。那它们又是怎么调用free函数 和 析构函数的呢内部实现的细节是怎么样的 其实这里也使用了封装的方法其内部实现是写了一个operator delete函数这个函数里面封装了free函数的调用。因此operator delete函数就完成了对象资源的释放。然后调用delete编译器会自动调用析构函数进行对象空间的释放。 从他们内部实现的细节可以看出如果只是对内置类型变量那么使用malloc free 与使用 new delete 都可以完成空间的开辟和释放。但是对于自定义类型就只能用newdelete。最主要的原因就是new和delete会自动调用构造函数和析构函数而malloc和free不能。 经典问题malloc/free 与new/delete 的区别是什么 我的理解是 从语法角度上看 malloc free是函数而new与delete是操作符。malloc需要自己手动计算所要申请空间的大小而new直接加类型然后在后面【】里面写上对象个数即可。malloc 返回的是vold*指针需要强转而new不用返回的就是该对象类型的指针。malloc开辟失败是会返回NULL,我们需要自己写一个检查代码来判断是否开辟失败而new开辟失败会抛出异常无需我们写检查代码。malloc只能完成申请空间的功能而new既可以申请空间又可以进行初始化。 从底层原理实现的角度上看 申请自定义类型对象时malloc/free只会开辟空间不会调用构造函数与析构函数而new 在申请空间后会调用构造函数完成对象的初始化delete在释放空间前会调用析构函数完成 空间中资源的清理 抛异常的基本使用 C中的new有抛异常的功能。而trycatch则可以去捕获new抛出的异常。 首先需要将要检查的代码放在try里面或者在这里面进行调用才能够对该代码段进行异常的检查和捕获。一旦捕获到异常就会自动跳转到catch里面然后进行异常的处理。下面是一个在32位平台上的应用举例 void func() {char* p1 new char[0x7fffffff];cout (void*)p1 endl;cout hello world endl; }int main() {try{func();}catch (const exception e){cout e.what() endl;}return 0; }运行结果截图 小知识点cout 流插入 不能打印出char*指针的地址 原因cout 会自动识别其为字符串并按照字符串的格式进行打印遇到/0就会结束打印。 解决方案将其强转为其他类型即可解决。 错误代码 程序运行结果 修改后的代码 运行结果 总结撒花 希望大家通过阅读此文有所收获    如果我写的有什么不好之处请在文章下方给出你宝贵的意见。如果觉得我写的好的话请点个赞赞和关注哦~
http://www.w-s-a.com/news/958482/

相关文章:

  • 北京中国建设银行招聘信息网站宁德蕉城住房和城乡建设部网站
  • 泉州做网站优化哪家好wordpress站点预览
  • 创建门户网站一页网站首页图如何做
  • 服装手机商城网站建设sns社交网站有哪些
  • 无锡工程建设招标网站怎么自己建设公司网站
  • 哪个网站可以学做咸菜安卓软件开发需要学什么软件
  • 自有网站建设的团队遂宁市建设局网站
  • 网站建设哪个好一些网站内容导出
  • 什么网站的页面做的比较好看网上做平面设计的网站
  • 网站建设单选网站建设学校培训学校
  • 可以做app的网站logo设计在线生成免费标小智
  • 网站变更备案做酒类网站
  • 网站必须要备案吗东莞市非凡网站建设
  • 太原建网站公司网站设计的流程是怎样的
  • 网站开发交易平台北京网站建设的价格低
  • 捷克注册公司网站搜索引擎广告推广
  • 网站的实用性青岛九二网络科技有限公司
  • 广东备案网站网站反链如何做
  • 做网站的实施过程企业建设H5响应式网站的5大好处6
  • ps制作个人网站首页景安搭建wordpress
  • 常德建设网站制作网站建设推广是什么工作
  • 长春服务好的网站建设百度推广话术全流程
  • 做的网站浏览的越多越挣钱基于jsp的网站开发开题报告
  • 好的做问卷调查的网站好网站调用时间
  • 广州微网站建设平台阿里云国外服务器
  • 如何把做好的网站代码变成网页wordpress shortcode土豆 视频
  • 网站改版竞品分析怎么做中山网站建设文化价格
  • 玉林市网站开发公司电话做网站空间 阿里云
  • 南充做网站略奥网络免费的正能量视频素材网站
  • 电子商务网站开发的基本原则汕头网站制作流程