ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 不可重入函数和可重入函数 导致不可预料的后果。这样的函数是不安全的函数,也叫不可重入函数。 满足下列条件的函数多数是不可重入(不安全)的: * 函数体内使用了静态的数据结构; * 函数体内调用了malloc() 或者 free() 函数(谨慎使用堆); * 函数体内调用了标准 I/O 函数。 相反,肯定有一个安全的函数,这个安全的函数又叫可重入函数。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。 保证函数的可重入性的方法: * 在写函数时候尽量使用局部变量(例如寄存器、栈中的变量); * 对于要使用的全局变量要加以保护(如采取关中断、信号量等互斥方法),这样构成的函数就一定是一个可重入的函数。 Linux常见的可重入函数: ![](https://img.kancloud.cn/a8/ec/a8ecf0508167ec9ff7caf444a93daa67_702x748.png) **注意:信号处理函数应该为可重入函数。**