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

专业做网站公司怎么样谈谈百度和谷歌seo优化的区别

专业做网站公司怎么样,谈谈百度和谷歌seo优化的区别,水印wordpress,wordpress整个网站响应速度慢【C】动态内存管理 new和delete用法内置类型自定义类型抛异常定位new 刨析new和delete的执行与实现逻辑功能执行顺序newdelete 功能实现operator new与operator delete malloc free与new delete的总结 在我们学习C之前 在C语言中常用的动态内存管理的函数为#xff1a; mallo… 【C】动态内存管理 new和delete用法内置类型自定义类型抛异常定位new 刨析new和delete的执行与实现逻辑功能执行顺序newdelete 功能实现operator new与operator delete malloc free与new delete的总结 在我们学习C之前 在C语言中常用的动态内存管理的函数为 malloc calloc realloc free 在我们学习了C后也迎来了新的动态内存管理的操作符 new new和delete 用法 内置类型 //对应类型指针接收 申请的类型 int* p1 new int//将创建的int变量赋值为3 int* p2new int(3);//申请多个int对象并将其赋值为1和2 int* p3 new int[2] {1, 2};//将new申请的空间进行释放 delete p1; delete p2;//与new[]配合使用 delete[] p3;从这上面我们可以看到new其实也没有什么特别出彩的地方初始化和申请多个对象老哥俩也都能做到 但是我们要看的是C对于C的区别可不是内置类型而是自定义类型。 自定义类型 这里是malloc的自定义类型的开辟内存方法 class A { public:A(int x 3):_x(x){}~A() {} private:int _x;}; int main() {A* A1 (A*)malloc(sizeof(A));free(A1); }接下来是new的申请内存的使用。 class A { public:A(int x 3):_x(x){cout 构造;}~A() {cout \n 析构;} private:int _x;};int main() {A* A1 new A(3);delete A1; }这里看到结果相信大家就看到new的一部分优势了。 new会自动调用构造函数delete会自动调用析构函数而free和malloc做不到 这就使new可以对开辟的对象进行初始化而malloc做不到 抛异常 在使用malloc中时当遇到申请空间失败时会进行返回空地址的。 就是通过返回值来表示错误 int main() {while (malloc(sizeof(1024 * 1024))){} }这个代码就是不挺向堆区申请空间直到malloc返回指针为空时结束 而在C中更偏向抛异常的表示方法。 int main() {int* p1nullptr;do{p1new int[1024 * 1024];} while (p1); }这里不停申请会出现错误 new在使用的时候会对申请空间的错误进行抛出异常。 这个时候想要看到什么地方出错就需要对异常进行捕获。 int main() {int* p1nullptr;try {do{p1new int[1024 * 1024];} while (p1);}catch (const exception e){cout e.what() endl;} }这里就成功将错误展示了出来。 定位new 经过上面我们知道new具有初始化对象的功能这是malloc不曾具有的。 所以这个时候就引出了new的一个特殊用法。 不需要new来申请和销毁空间只是对对象进行初始化 用法 new (place_address) type class A { public:A(int member13){_member member;}~A(){cout \n 析构;} private:int _member;};int main() { //这里的A1只是一个地址没有进行初始化。A* A1 (A*)malloc(sizeof(A)); //这里通过new来调用构造函数 地址 类型 构造函数的参数new (A1) A (1);}这个一般来讲都是用在池化技术里的。 博主也没学到哪所以只能稍微简单讲下 为了提高效率所以会选择一次申请一块空间 刨析new和delete的执行与实现逻辑 这里我们从上面能看到new和delete具有以下功能 1.开辟/销毁 空间 2.抛出异常 3.调用 构造/析构 函数 功能执行顺序 这里就随便写个代码来解释它的执行 class A { public:A(){_member new int;}~A() {cout \n 析构;delete _member;} private:int* _member;};int main() {A* A1 new A; }new 通过这上面的顺序我们能知道new一个对象所走的步骤 我们初心是为了理清楚 1.开辟空间 2.抛出异常 3.调用 构造 函数 这三步的步骤顺序。 这里为了让大家看得清楚一点就稍微标记一下 这里我们就能看到对于new来说 需要进行的操作步骤是 1.用malloc来向堆区申请空间 2.对malloc进行判断是否出错。 3.调用构造函数 delete 而delete就很简单了 这是new所走的步骤。 这里我们能看到每个变量都层层指向 所以我们原路返回一个一个回头销毁就行 这里我们也进行标记一下 所以delete的执行顺序为 1.调用构造函数 2.用free来向堆区申请空间 3.对free进行判断是否出错。 功能实现 这里我们知道了new和delete的底层执行顺序 这里就要来了解一下他们的实现的方式了。 1.开辟/销毁 空间 2.抛出异常 3.调用 构造/析构 函数 我们的目标是要实现这三个功能。 销毁/开辟空间在C语言中不就有现成的吗 free和malloc函数。 所以实现第一步直接调用malloc和free即可 第二步抛出异常就是按照情况进行判断然后进行异常的捕获 第三步调用构造析构函数不难直接调用就可以 operator new与operator delete 这里的operator new和operator delete 是设计的全局函数专门为new和delete的实现的函数 主要的作用是实现前两步 1.开辟/销毁 空间 2.抛出异常 这里就能写出new和delete的实现逻辑了 malloc free与new delete的总结 综上所述 new和delete在实现的过程中调用了free和malloc的函数。 所以可以说 new和delete可以说是为了让内存开辟更适合面向对象语言的使用而诞生的 所以与其说new和malloc的区别不如说new对于malloc的提升有哪些 提升 1. malloc的返回值为(void), 在使用时必须强转。new不需要因为new后跟的是空间的类 2. malloc申请空间失败时返回的是NULL因此使用时必须判空new不需要但是new需要捕获异常 3. 申请自定义类型对象时malloc/free只会开辟空间不会调用构造函数与析构函数 而new在申请空间后会调用构造函数完成对象的初始化delete在释放空间前会调用析构函数完成空间中资源的清理 4.malloc不会对申请的空间进行初始化new可以对申请内存进行初始化。
http://www.hkea.cn/news/14268673/

相关文章:

  • 一个网站建立团队大概要多少钱携车网网站开发怎么样
  • 网站开发 商标第几类百度做的网站
  • python做的网站站长工具国色天香
  • 网站对企业的作用wordpress 会员查看
  • 微商网站模板怎么做互联网创业
  • vue可以做网站吗黑群晖做网站
  • 彩票网站开发精准大数据营销公司
  • 网站开发设计资讯百度投放广告一天多少钱
  • 网站数据库多大合适建设工程施工合同范文
  • wordpress移动到回收站时发生错误网站英文域名是什么
  • 做网站前产品经理要了解什么天津房地产集团网站建设
  • 2018网站内容和备案不同类型网站栏目设置区别
  • 长春网站制作允许吗钉钉小程序开发平台
  • 公司的网站设计方案哈尔滨网站建设推广方案
  • 桂阳做网站的软件定制开发外包人社网站和微信平台建设方案
  • 深圳有做网站的公司有哪些做网站商城需要多少钱
  • 帮他人做视频网站违法吗php网站哪些
  • 府谷网站建设网站建设与制作设计公司
  • 怎样做自己的微商网站多少钱一斤怎么算
  • ueeshop外贸建站公司espcms易思企业网站
  • 做局域网网站河南省新闻联播
  • 有做教育行业的招聘网站吗现在的公司都有自己的网站吗
  • wordpress 文章版权济南外贸seo
  • 上海创意网站建设新网站 seo
  • 跨境建站服务公司制作报价网站
  • 一般什么行业做网站的多英文网站建设的请示怎么写
  • 为学校网站建设阿里巴巴开网店的详细步骤
  • 外网室内设计网站别人做的网站不能用怎么办
  • 怎样给自己的店做网站网络营销推广的主要形式
  • 一般网站维护要多久nginx进wordpress不能进目录