满足下面条件之一的多数是不可重入函数:
- 使用了静态数据结构;
(静态数据结构:由系统分配固定大小的存储空间,以后在程序运行的过程中,存储空间的位置和容量都不会再改变。如常用的整型.浮点型等类型数据,都属于静属态数据,他们的存储空间在程序执行过程中不能加以改变。) - 调用了malloc或free函数;
printf - 引用全局变量stdout
malloc - 全局内存分配表
free - 全局内存分配表 - 调用了标准I/O函数;
(标准I/O函数很多实现都以不可重入的方式使用全局数据结构。) - 进行了浮点运算;
(许多的处理器/编译器中,浮点一般都是不可重入的,浮点运算大多使用协处理器或者软件模拟来实现。)
预防措施:加保护锁。