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

哪些网站是增值网文档生成器app

哪些网站是增值网,文档生成器app,免费网页设计模板网站,柳州论坛网站建设简述 什么是RAII RAII(Resource Acquisition Is Initialization)是c之父Bjarne Stroustrup提出的概念。资源一般分三个步骤:获取、使用和销毁,而在自由使用内存的c语言中,资源的销毁常常是程序员容易遗漏的事情&…

简述

什么是RAII

RAII(Resource Acquisition Is Initialization)是c++之父Bjarne Stroustrup提出的概念。资源一般分三个步骤:获取、使用和销毁,而在自由使用内存的c语言中,资源的销毁常常是程序员容易遗漏的事情,让程序自动销毁资源也成为了业界的常规方案。

c实现

#define RAII_FREE(FreeFunc) __attribute__((cleanup(FreeFunc)))

以上代码使用了编译属性__attribute__,在函数退出后自动回收资源,使用方式如下:

void MemFreeL2PointerAndSetNull(void *ptr)
{void **pptr = (void **)ptr;free(*pptr);
}void TestFunc()
{/* 入参是析构函数,在malloc资源时也指定free要使用的函数,尽量不在宏中写函数,减少后续定位的复杂度,并且也满足malloc和free的配对出现,可读性更好 */RAII_FREE(MemFreeL2PointerAndSetNull) TestObj *obj = (TestObj *)malloc(sizeof(TestObj));obj->grade = 1;
}

考虑到__attribute__是编译属性,笔者调研了几款常见编译器,支持程度如下:

编译器是否支持参考
GCC支持https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html
Clang支持https://clang.llvm.org/docs/AttributeReference.html
MSVC不支持,可以通过 _try 和 _finally 关键字实现类似的功能https://learn.microsoft.com/en-us/cpp/c-language/try-finally-statement-c?view=msvc-170

扩展

  • 智能指针:FreeFunc中加入引用技术,则可实现c++中的智能指针功能

参考

RAII in C: cleanup gcc compiler extension

http://www.yayakq.cn/news/359508/

相关文章:

  • 工业园区门户网站建设方案松江品划网站建设推广
  • 今天出京入京最新通知兰州网站seo外包
  • 网站优化怎么看深圳几个区
  • wordpress建立的网站吗建网站免费域名
  • 罗湖网站建设公司wordpress 有道云笔记
  • 运营实力 网站建设北京网站定制设计开发公司
  • 网站权重排行刷关键词排名软件
  • 湖北营销型网站建设费用重庆手机模板建站
  • 医院网站高端网站建设 骆诗
  • 全栈网站开发工程师淘宝网手机网页版
  • 网站制作外包传媒 wordpress
  • 网站设计杭州自建站网址
  • 网站建设毕业设计选题如何做网站搬家
  • 做美食网站视频下载企业车辆管理系统平台
  • 免费制作论坛网站福州建设厅网站
  • 长沙网站建设优化盐城个人网站建设
  • 介休城乡建设网站佛山 技术支持 骏域网站建设
  • 做什么类型网站可以吸引用户建站交流
  • 无锡网站建设标准html做游戏网站
  • 做方案的网站中核华泰建设有限公司的网站
  • 单页产品销售网站如何做推广网站登陆注册怎么做
  • 德德模板网站建设步骤精准大数据营销公司
  • 1万流量网站 服务器配置万盛建设局官方网站
  • 网站开发哪家公司电话国外上国内网站很慢
  • 唐山快速建站公司做一款app的流程
  • 个人做外贸网站平台百度热搜广告位多少钱
  • 怎么样免费创建网站百度seo插件
  • 用wordpress搭建的网站在线培训系统软件
  • 多光营销软件网站企业网站建设知识
  • 花钱做推广广告哪个网站好网站建设总体规划包括