按照ISO C的规定,一个进程可以注册多大32个函数,这些函数将由exit自动调用。这些函数被称为“终止处理程序”(exit handler),并调用atexit函数来注册这些函数。

#include

/*成功返回0,失败返回非0*/

int atexit(void (*func)(void));

从原型我们可以看到,被注册的函数是一个没有返回值很没有参数的函数,我们可以使用这个特性来实现面向对象的析构函数。

#include

#include

void func(void);

int main() {

int res;

res = atexit(func);

if (res == 0) {

printf("Resgister destory success./n");

exit(0);

} else {

printf("Resgister destory failure./n");

exit(1);

}

}

void func(void) {

printf("Program is exiting.../n");

}

$ gcc atexit.c -o atexit

$ ./atexit

输出:

Resgister destory success.

Program is exiting...

所以可以看到析构函数已经执行了,利用这个方法,我们可以在程序退出的时候自动关闭一些资源句柄,如文件句柄等。

c语言模仿自动析构,C语言实现析构器相关推荐

  1. 编好c语言网上自动评测,C语言程序自动评测系统的设计与实现

    摘要: 随着计算机技术的发展和提高,计算机辅助评价(CAA)已成为当前计算机教育应用的热点研究问题之一.已有的研究成果已能很好的解决客观题测评问题,而主观题的评测问题则仍处于发展阶段.C语言程序设计课 ...

  2. c语言商店自动销售,c语言商店商品管理系统设计报告与源代码.doc

    c语言商店商品管理系统设计报告与源代码.doc 1目录1系统分析21.1课程设计内容21.2系统功能需求分析21.3数据结构设计32系统设计32.1总体设计32.2详细设计42.2.1界面设计42.2 ...

  3. c语言模拟自动饮料机,C语言--小程序--简单模拟ATM机

    原标题:C语言--小程序--简单模拟ATM机 ATM.H #ifndef ATM_h #define ATM_h #include #include #include typedef struct _ ...

  4. c语言模仿atm源代码,C语言ATM程序模拟

    <C语言ATM程序模拟>由会员分享,可在线阅读,更多相关<C语言ATM程序模拟(18页珍藏版)>请在人人文库网上搜索. 1.一. 课题要求1. 当输入给定的卡号和密码(初始卡号 ...

  5. c语言怎么自动计时,C语言精确计时方法

    精确获取时间: QueryPerformanceFrequency() -基本介绍 类型:Win32API 原型:BOOL QueryPerformanceFrequency(LARGE_INTEGE ...

  6. 【Unity编辑器扩展】语言国际化工具,生成多语言Excel自动翻译并导出多语言表

    工具效果如图: 多语言是个非常简单且常用的功能.但是重复工作量大,程序手动把多语言Key配置到多语言表经常会出现错漏,或者几经改版,有些Key已经不用却没有剔除,久而久之造成冗余.这中简单且重复的工作 ...

  7. Wix 安装部署教程(十六) -- 自动生成多语言文件

    Wix 安装部署教程(十六) -- 自动生成多语言文件 原文:Wix 安装部署教程(十六) -- 自动生成多语言文件 因为持续集成需要,所有项目编译完之后生成一个多语言的安装包.之前生成mst文件都是 ...

  8. 《操作系统》课程设计报告——用JAVA语言模仿实现“吃水果”问题

    引言 操作系统是计算机的核心总控软件,是计算机系统的指挥和管理中心,是计算机系统的灵魂.进程管理与文件系统是操作系统都是操作系统的五大重要功能之一.通过模拟操作系统的实现,加深学生对计算机操作系统内核 ...

  9. Easystructure教程_C语言源代码自动生成流程图

    目录 Easystructure教程_C语言源代码自动生成流程图 1. 简介 2. 下载 3. 安装 4. 使用 5. 其他软件推荐 5.1 Mermaid 5.2 Code2flow ** Easy ...

最新文章

  1. AVR开发 Arduino方法(附四) 参考文献与网址
  2. 基于pytorch的卷积神经网络量化实现
  3. AI如何在安防行业更加深入?可从超高清视频监控切入
  4. mysql temporary_MySQL中的两种临时表
  5. ThreadLocal是救火队长
  6. 【Nginx】Nginx配置文件参数/启动参数详解;启动/停止/重新加载配置命令
  7. Oracle :备份 、还原数据库
  8. MySQL主从复制原理(原理+实操)
  9. 在云面前,为何Cisco,Dell和HP都是Loser
  10. 阿里云服务器怎么配置安全组?
  11. 人脸识别、活体检测、人脸识别面临的挑战
  12. 多种隐藏滚动条但是依然可以滚动实现方式
  13. ImageJ 用户手册——第四部分(ImageJ用户界面)
  14. KLOOK客路旅行基于Apache Hudi的数据湖实践
  15. 使用JDK的 keytool 生成JKS,修改查看JKS信息
  16. 尽量使用notifyAll,而不用notify
  17. 计算机三级数据库技术——第一章 数据库应用系统开发方法学习笔记
  18. 手机电脑如何使用OTG连接U盘教程及OTG功能常见问题解答
  19. 构建之法10,11,12章的读后感
  20. 2019 计蒜之道 复赛 “星云系统” 贪心

热门文章

  1. simsimi 教程 java_用java实现Simsimi小黄鸡接口
  2. JavaEE三层架构
  3. 什么样的蓝牙耳机适合上网课?稳定性强的蓝牙耳机推荐
  4. Spring声明式事务管理源码解读之事务提交
  5. 甜酷女孩叶悠悠,邀你走进她的元宇宙旅行日记
  6. iOS 视图透明度与视图颜色透明度
  7. win32 连接授时服务器
  8. iconfont小图标从下载到引入到vue项目中的详细教程
  9. 固态硬盘装完无法启动备忘
  10. 虚拟化最少几台服务器,虚拟化服务器至少几台