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

网站建设uuiop长春做网站企业

网站建设uuiop,长春做网站企业,怎样做公众号,网站建设投标方案目录 一.程序启动所关联的内存分区 二.动态内存的申请和释放 三.将RAII思想融入代码 四.RAII思想的简单应用 一.程序启动所关联的内存分区 .dll文件是Dynamic Link Library#xff08;动态链接库#xff09;文件的缩写#xff0c;它是一种共享库文件#xff0c;包含…目录 一.程序启动所关联的内存分区 二.动态内存的申请和释放 三.将RAII思想融入代码 四.RAII思想的简单应用  一.程序启动所关联的内存分区 .dll文件是Dynamic Link Library动态链接库文件的缩写它是一种共享库文件包含了程序所需的代码和数据。与静态链接库不同动态链接库可以在程序运行时动态加载使得程序的内存占用更小同时也方便了程序的更新和维护。 程序启动时系统会将exe主程序依赖的所有dill库文件加载到进程的代码段的内存区中这些文件里存放的是可执行的二进制机器码也就是汇编代码。 等到所有的dill模块都加载完毕后才将exe主程序加载到进程空间之后启动C/C运行时库然后给全局变量分配内存并执行全局变量的初始化操作此处对应的是全局内存区然后才会进入到main函数程序启动。 当执行函数时在当前线程栈内存上给函数的局部变量申请栈内存如果执行的是malloc或者new的代码申请的就是堆内存。 二.动态内存的申请和释放 在C/C中动态申请的内存是需要开发人员自己去管理的即使用完毕后需要手动去释放否则就会造成内存泄漏产生严重bug。 三.C中使用new去申请内存用delete来释放内存 C在支持malloc和free动态申请内存的基础上新增new和delete两种方式new主要是用来new出一个C对象来也就是在堆内存上申请一个C对象的内存不用时调用delete释放掉。 new一个C对象时不仅会在堆上申请内存还会调用该对象的构造函数具体来说是先申请内存再调用构造函数。 同样的delete时会调用该对象的析构函数具体来说是先调用析构函数然后释放掉对象所占堆内存。 需要注意的是new出来的对象不会自动调用析构函数需要我们手动去delete。 三.将RAII思想融入代码 这样一来如果程序很复杂那delete就会很繁琐并且容易出错所以我们编程时就需要融入RAII(Resource Acquistion Is Intialization)思想。 当我们在main函数中声明一个局部对象的时候会自动调用构造函数进行对象的初始化当整个main函数执行完成后自动调用析构函数来销毁对象整个过程无需人工介入由操作系统自动完成于是很自然联想到当我们在使用资源的时候在构造函数中进行初始化在析构函数中进行销毁。整个RAII过程我总结四个步骤 a.设计一个类封装资源 b.在构造函数中初始化 c.在析构函数中执行销毁操作 d.使用时声明一个该对象的类 下面是基于RAII思想实现的一个简单的互斥锁。 四.RAII思想的简单应用 #includepthread.h #includeiostreamclass Mutex { private:/* data */pthread_mutex_t *_mutex; public:Mutex(pthread_mutex_t *mutex);~Mutex();void Lock(){std::coutInitialize Successstd::endl;pthread_mutex_lock(_mutex);}void UnLock(){std::coutDelete Successstd::endl;pthread_mutex_unlock(_mutex);} };Mutex::Mutex(pthread_mutex_t* mutex) :_mutex(mutex) {}Mutex::~Mutex() {}class LockGuard { private:Mutex _mutex; public:LockGuard(pthread_mutex_t *mutex);~LockGuard(); };LockGuard::LockGuard(pthread_mutex_t* mutex) :_mutex(mutex) {_mutex.Lock(); }LockGuard::~LockGuard() {_mutex.UnLock(); }int main() {pthread_mutex_t mutex;LockGuard lockGuard(mutex);return 0; }运行代码自动调用构造函数和析构函数不用我们手动删除非常方便。  需要注意Delete Success是在return 0之后才打印的。
http://www.dnsts.com.cn/news/35566.html

相关文章:

  • 免费建立个人网站申请旅游网站的建设方式
  • 有哪些线上做酒店的网站国外域名注册做违法网站
  • 经常做飞机网站做跨境电商被骗了
  • 网站开发主管工作内容厦门蓝典网站建设
  • 网站权重如何速度增加网站建设需求网
  • 人人商城网站开发深圳网页设计兴田德润电话多少
  • 做网站购买服务器多少钱加强门户网站建设的方案
  • 购物网站毕业设计论文个人网页制作源代码格式
  • 威海电子商务网站建设最牛网站设计公司
  • 电脑做系统ppt下载网站好怎么屏蔽优酷网站的广告
  • 网上商城建设 网站定制开发知道域名怎么进入网站
  • 建设优惠券网站做外贸接私单的网站
  • 企业网站建设设计需要什么怎么做网站免费的
  • 西乡城建局网站手把手教你制作网页
  • 服务网站开发一个微信小程序价格
  • 杭州网站建设网页制作佛山微信网站建设
  • 厦门网站推广中企动力销售一个月能挣多少
  • 潍坊网站开发招聘信息民权网站建设
  • 什么网站可以做设计兼职百度 门户网站
  • 邵阳网站推广人与马做的网站
  • 网站开发需要多少费用供水开发建设公司网站
  • h5游戏平台搭建系统优化的影响因素
  • 中山网站建设方案免费网络电话app
  • 免费又实用的网站wordpress本地主机
  • 如何修改单页网站房产资讯最新消息
  • 皮肤自做头像的网站做网站推广有用吗
  • 外贸网站镜像3 建设营销型网站流程图
  • 北京优化网站外包公司企业网站的形式
  • 如何查询网站域名备案信息做网站论坛 前置许可
  • 网站seo优化主要有哪些手段代加工手工活外发免费 来料加工