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

百度分享wordpress插件高手优化网站

百度分享wordpress插件,高手优化网站,视频网站建设,做app要不要建网站#x1f3f3;️‍#x1f308;C/C内存分布 说明#xff1a; 1.我们的代码并非放在代码段里的#xff0c;而是以文件的形式存在磁盘上的。 代码经过编译链接形成的二进制指令#xff0c;才是放进代码段里的。#xff08;即可执行代码#xff09; 2.“abcd”如果没有被c…️‍C/C内存分布 说明 1.我们的代码并非放在代码段里的而是以文件的形式存在磁盘上的。 代码经过编译链接形成的二进制指令才是放进代码段里的。即可执行代码 2.“abcd”如果没有被const修饰那是放在栈区的。经过const修饰为只读常量后放在代码段。 练习 int globalVar 1; static int staticGlobalVar 1; ​ void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] abcd;const char* pChar3 abcd;int* ptr1 (int*)malloc(sizeof(int) * 4);int* ptr2 (int*)calloc(4, sizeof(int));int* ptr3 (int*)realloc(ptr2, sizeof(int) * 4);free(ptr1);free(ptr3); } 选择题 选项: A.栈 B.堆 C.数据段(静态区) D.代码段(常量区) globalVar在哪里 staticGlobalVar在哪里 staticVar在哪里 localVar在哪里 num1 在哪里 char2在哪里 *char2在哪里 pChar3在哪里 *pChar3在哪里 ptr1在哪里 *ptr1在哪里 答案 CCCAA AAADAB ️‍C的内存管理方式 new/delete C在原有基础上(malloc之流) 引入了new和delete。 new的用法 //动态申请一个int类型的空间 int*p1 new int; ​ //动态申请一个int类型的空间并初始化为10 int*p2 new int(10); ​ //动态申请10个int类型的空间 int*p3 new int[10];//动态申请10个int类型的空间,并将前三个分别初始化为1、2、3 int*p new int[5]{1,2,3};   //注意这种方式C98是不支持的C11支持 delete的用法 delete p1; delete p2; delete[] p3; ​ //注下面这种写法是错误的 delete p1,p2;   //这样写仅能delete p1 delete是一个操作符后面直接跟操作数不需要像free那样接 ( )。 之前C语言中学到的malloc、calloc、free等C中照样是可以用的。 ❓那么问题来了new/delete 和 malloc/free 的区别是什么 区别一在对待自定义类型上 其实两者对待内置类型没有区别。 但是对于自定义类型new /delete 除了开空间还会调用构造函数和析构函数。 可见new/delete是为自定义类型准备的。 区别二开辟失败时 malloc申请空间失败会返回NULL所以需要进行检查 而new申请不需要做检查因为申请失败它直接抛异常 通过try-catch可以知道发生了什么异常 结果bad allocation 区别三new/delete是关键字而malloc/free是函数 new/delete操作自定义类型 class A { public:A() {cout A() endl;}~A() {cout ~A() endl;} }; ​ int main() {A* p1 new A; //new自定义类型delete p1; ​A* p2 (A*)malloc(sizeof(A)); //malloc自定义类型free(p2); ​int* p3 new int;   //new内置类型delete p3; ​int* p4 (int*)malloc(sizeof(int)); //malloc内置类型free(p4);return 0; } 结果 可见只有new/delete在操作自定义类型时会自动调用构造和析构函数。 new/delete的底层原理 new/delete的底层原理其实是 调用了函数operator new / operator delete来申请和释放空间。 注这里不是运算符重载函数名就是operator new。 ️‍️我们来看一下函数operator new void *__CRTDECL operator new(size_t size) _THROW1(_STD bad_alloc) {void *p;while ((p malloc(size)) 0) //通过malloc申请if (_callnewh(size) 0){// 当内存不够申请失败时// 这里会抛出bad_alloc 类型异常static const std::bad_alloc nomem;_RAISE(nomem);}return (p); } 可见operator new 实际也是通过malloc来申请空间而operator delete是通过free来释放空间的。 既然本质还是用malloc那兜这么一圈的意义何在 开空间的同时封装了malloc失败时能符合Cnew的失败机制即抛异常。 常考的笔试题 Q: malloc/free和new/delete的区别  从本质上1.new/delete是关键字而malloc/free是函数。 从功能上 2.malloc/free仅能开空间而new/delete在开空间的基础上还能自动调用构造/析构函数。 3.malloc开空间时要算好具体开的字节数而new不用想开几个[ ]中指定对象个数即可。 4.malloc的返回值为void*,在使用时必须强转new不需要因为new后跟的是空间的类型。 5.malloc申请空间失败时返回的是NULL因此使用时必须判空new不需要但是new需要捕获异常。
http://www.w-s-a.com/news/699502/

相关文章:

  • 网站续费 多久想自己做网站该学些什么
  • 可以自己做网站wordpress英文写作插件
  • 国外可以做会员网站的网站怎么查百度竞价关键词价格
  • 新站网站建设亚马逊关键词
  • 电商网站前端架构设计上海市建设工程安全生产协会网站
  • 东莞企业免费模版网站建设一般网站维护要多久
  • 著名建筑设计网站常州制作网站价格
  • 食品营销型网站广东省广州市白云区
  • 如何做网站哪个站推广描述对于营销型网站建设很重要飘红效果更佳
  • 济阳做网站公司99企业邮箱888
  • 国贸做网站的公司能接做网站的活的网站
  • 淮南建设厅网站上杭县建设局网站
  • 东莞做网站公司首选!西安注册公司费用
  • 做网站包括什么卖水果网站模板
  • 扬州网站建设外包wordpress 文章评分
  • 网站建设网站多少钱公司名字大全列表
  • 设计企业网站内容wordpress 投稿者 权限
  • seo网站推广免费价格低的成语
  • 做网站建设销售辛苦吗专题页是什么
  • 做网站的软件名字全拼wordpress可以上传文件吗
  • 建品牌网站公司关于asp_sql网站开发的书籍
  • 建网站公司营销型网站建设wordpress自定义登录页
  • 泉州市住房和城乡建设局网站淘宝店网站怎么做
  • 企业网站建设费未付款怎样挂账长春网站制作专业
  • 深圳找网站建设邹城市建设局网站
  • 长春火车站停运了吗网站开发概要设计
  • 网站开发表格整体页面居中网站域名详解
  • 漕泾网站建设赢展网站建设
  • 医院网站建设的要求毕业了智慧团建密码忘了
  • 网站怎么建设在哪里接单坪山商城网站建设哪家便宜