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

网站开发与维护课程设计有什么类似凡科建站

网站开发与维护课程设计,有什么类似凡科建站,网站空间与服务器,王店镇建设中学网站内存分配#xff1a; 静态存储区#xff1a; 局部static对象类的static数据成员定义在任何函数之外的变量 栈区#xff1a; 函数内的非static对象 动态内存分配的方式有#xff1a; new和delete智能指针#xff08;shared_ptr、unique_ptr、weak_ptr#xff09;all…内存分配 静态存储区 局部static对象类的static数据成员定义在任何函数之外的变量 栈区 函数内的非static对象 动态内存分配的方式有 new和delete智能指针shared_ptr、unique_ptr、weak_ptrallocator类malloc和free 直接管理内存 运算符new分配内存delete释放new分配的内存。 int* p new int ();//new表达式在自由空间构造一个对象并返回指向该对象的指针。 delete p; int* pi new int[10]();//分配一个10个int的数组pi指向第一个int。默认情况下动态分配的对象是默认初始化的这意味着内置类型或者组合类型的对象的值是未定义的而类类型对象将用默认构造函数进行初始化。 用new分配const对象是合法的但const对象必须进行初始化。 如果一个程序用光了所有可用的内存new表达式会失败并抛出bad_alloc异常该异常可以通过nothrow阻止阻止异常抛出的new称为定位new。 int* p1 new int;//如果分配失败new抛出std::bad_alloc。 int* p2 new (nothrow)int;//如果分配失败new返回一个空指针。delete表达式也执行两个动作销毁一个给定的指针指向的对象释放对应的内存。 传递给delete的指针必须指向动态分配的内存或者是一个空指针释放一个并非new分配的内存或者将相同的指针值释放多次其行为是未定义的。 释放动态数组时数组中的元素按逆序销毁。 释放一个const动态对象只要delete指向它的指针即可。 const int* pci new const int(1024); delete pci;直接管理内存容易犯的错 忘记delete内存内存泄漏使用已经释放掉的对象同一块内存释放两次 空悬指针/野指针dangling pointer指向一块曾经保存数据对象但现在已经无效的内存的指针。 产生原因指针变量声明时未初始化或者指针被delete或free后未置为nullptr以及指针操作超越了变量的作用范围。 智能指针 shared_ptr允许多个指针指向同一个对象 unique_ptr“独占”所指向的对象 weak_ptr指向一个shared_ptr管理的对象它不控制指向对象的生存期。 shared_ptr 初始化 shared_ptrstring p1;//默认初始化的智能指针保存着一个空指针智能指针的使用方式与普通指针类似。解引用一个智能指针返回它指向的对象如果在一个条件判断中使用智能指针效果是检测它是否为空。 if (p1 p1-empty()) {*p1 hi;//如果p1指向一个空string解引用p1,将一个新值赋予string。 }make_shared函数 类似顺序容器的emplace成员make_shared用其参数来构造给定类型的对象。 shared_ptrint pi make_sharedint(42);引用计数 每个shared_ptr都有一个关联的计数器通常称其为引用计数。无论何时我们拷贝一个shared_ptr或将其作为参数传递给一个函数以及作为一个函数的返回值时它所关联的计数器就会递增。当我们给shared_ptr赋予一个新值或者是shared_ptr被销毁时计数器就会递减。当一个shared_ptr的计数器变为0他就会自动释放自己所管理的对象。 程序使用动态内存的三个原因 程序不知道使用多少个对象容器类程序不知道所需对象的具体类型程序需要在多个对象间共享数据 shared_ptr与new的结合 接受指针参数的智能指针构造函数是explicit的因此我们不能将一个内置指针隐式转换为一个智能指针必须使用直接初始化的形式。 shared_ptrint p1 new int(1024);//错误 shared_ptrint p1(new int(1024));//正确如果想用shared_ptr管理动态数组必须提供自己定义的删除器并且不支持下标操作。 shared_ptrint sp(new int[10],[](int *p){delete [] p ;}); sp.reset();正确使用智能指针的规范 使用相同的内置指针值初始化或reset多个智能指针。不delete get() 返回的指针。不使用get()初始化或reset另一个智能指针。如果你使用get返回的指针记住当最后一个对应的智能指针销毁后你的指针就变为无效了。如果你使用智能指针管理的资源不是new分配的内存记住传递给它一个删除器。 unique_ptr: 当我们定义unique_ptr时需要将其绑定到一个new返回的指针上而且必须采用直接初始化的形式。 由于unique_ptr“独占”它指向的对象因此unique_ptr不支持拷贝或赋值操作。 虽然我们不能拷贝和赋值unique_ptr但可以调用release或reset将指针所有权从一个非constunique_ptr转移给另一个unique: unique_ptrstring p1(new string(first)); unique_ptrstring p2(p1.release());//将所有权从p1转向p2,p1被置为空 unique_ptrstring p3(new string (second)); //将所有权从p3转移给p2. p2.reset(p3.release());//reset释放了p2原来指向的内存。unique_ptr可以管理动态数组必须在对象类型后面跟一对空方括号支持下标操作。 unique_ptrint[] up(new int[10]); up.release();//自动用delete[]销毁其指针。 for(size_t i 0 ; i ! 10 ; i) {up[i] i; }weak_ptr: weak_ptr不控制所指向的对象的生存期指向一个由shared_ptr管理的对象。将一个weak_ptr不会改变shared_ptr的引用计数。一旦最后一个指向对象的shared_ptr被销毁对象就会被释放。 由于对象可能不存在不能使用weak_ptr直接访问对象必须调用lock。此函数检查weak_ptr指向的对象是否仍存在。如果存在lock返回一个指向共享对象的shared_ptr。 可以解决两个shared_ptr互相引用的问题。 allocator类 将内存分配和对象构造分离开提供一种类型感知的内存分配方法他分配的内存是原始的、未构造的。 定义一个allocator对象必须指明这个allocator可以分配的对象类型。当一个allocator对象分配内存时它会根据给定的对象类型来确定恰当的内存大小和对齐位置 allocatorstring alloc;//可以分配string的allocator对象 auto const p alloc.allocate(n);//分配n个未初始化的string。 auto q p; alloc.construct(q);//*q为空字符串 alloc.construct(q,10,c);//*q为cccccccccc alloc.construct(q,hi);//*q为hi cout*pendl;//正确:使用string的输出运算符 cout*qendl;//灾难q指向未构造的内存 while(q!p)alloc.destroy(--q);//释放我们真正构造的string //destory接受一个指针对指向的对象执行析构函数。 alloc.deconstruct(p,n);//通过deallocate释放内存。 //传递给deallocate的指针不能为空它必须指向由allocate分配的内存。而且传递给deallocate的大小参数必须与调用allocated分配内存时提供的大小参数具有一样的值。
http://www.sadfv.cn/news/52697/

相关文章:

  • 专业建设网站的公司网页前端设计师培训学校
  • 手机网站打不开是什么原因造成的大庆做流产油城女子网站
  • 长城宽带做网站购买一个网站需要多少钱?
  • 网站链接做投票学校网站建设责任书
  • 合肥企业建网站制作一个学校门户网站
  • 各地网站备案网站连接跳转怎么做
  • 网站开发介绍人拿多少钱宁波专业公司网页设计
  • 高校网络网站建设意义及措施上海招聘网站建设
  • 网站建设跟网站结构php语言的网站建设
  • 怎样理解网站建设与开发这门课鄂州门户网
  • 网站模板素材门户网站建设的意义
  • 东莞网站优化seo西安网站维护公司
  • 公司网站建设制作难么网站建设是什么语言
  • 团购网站平台建设用dw软件做网站栅格系统
  • 网站开发技术视频教程郑州最新消息今天
  • 品牌管理公司网站建设哪些网站有友情链接
  • 网站建设模拟网络工程有限公司
  • php asp网站开发教程信阳百度推广公司电话
  • c#网站开发+pdf3d效果图怎么制作用什么软件
  • 邢台无忧网站建设公司网站集约化建设汇报
  • 网站建设大概好多钱网页版word在线编辑
  • 网站那种推广链接怎么做app网站多少钱
  • 做的网站怎样评估价值h5生成小程序
  • 凡客网登录太原网站快速排名优化
  • 手工制作会动的玩具网站如何免费做SEO优化
  • 网站开发 例子推荐seo关键词优化
  • 制作报价网站黑白网站模板
  • 四川网站建设服务wordpress数据库缓存插件
  • 宜兴宜兴建设局网站做视频采集网站违法吗
  • 网站图片上的分享怎么做教师网站建设企业实践总结