主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行...
可重入的函数:一般是保存在栈里面的,是可以被编译器随机的分配内存并且释放的函数称为可重入函数 不可重入函数:一般是指函数返回值是static 型的或者是函数内部定义了static变量或者使用了全局变量等称为不可重入函数 【2】为什区分可重入和不可重入函数呢? 因为多任务操作系统中,需要一个函数要满足同时被多个任务...
C语言之可重入函数 和不可重入函数_c 可重入函数_KiranWang的博客-CSDN博客 总结:不可重入函数的四种情况 1.静态数据结构:如静态局部变量活全局变量 2.malloc()或者free()函数 因为这两个函数都会操作全局的链表,如果第一次malloc没结束时,再被一次malloc打断,那么两次malloc申请的空间起始地址可能会相同。 3.调用...
基本上下面的函数是不可重入的 1 2 3 (1)函数体内使用了静态的数据结构; (2)函数体内调用了malloc()或者free()函数; (3)函数体内调用了标准I/O函数。 ...
可重入性是指一个函数在被中断的情况下可以安全地被重新调用,而不会产生意外的结果或影响其他部分的执行。在C语言中,可重入性是一个重要的概念,特别是在多线程或中断驱动的环境中。 可重入函数具有以下特点:...
基本上下面的函数是不可重入的 (1)函数体内使用了静态的数据结构;(2)函数体内调用了malloc()或者free()函数;(3)函数体内调用了标准I/O函数。 把一个不可重入函数变成可重入的唯一方法是用可重入规则来重写他。 其实很简单,只要遵守了几条很容易理解的规则,那么写出来的函数就是可重入的。
不可重入函数在实时系统设计中被视为不安全函数。 满足下列条件的函数多数是不可重入的: (1)函数体内使用了静态的数据结构; (2)函数体内调用了malloc()或者free()函数; (3)函数体内调用了标准I/O函数。 (4)函数体内调用了不可中断的硬件寄存器,如串口收发寄存器 ...
⼀、不可重⼊函数。在函数中如果我们使⽤静态变量了,导致产⽣中断调⽤别的函数的过程中可能还会调⽤这个函数,于是原来的静态变量被在这⾥改变了,然后返回主体函数,⽤着的那个静态变量就被改变了,导致错误。这类函数我们称为不可重⼊函数。在嵌⼊式系统的设计中,经常会出现多个任务调⽤同...
简而言之,可重入函数的安全的,不可重入函数是不安全的。 适用场景 中断 如该函数在执行过程中,发生中断,ISR开始执行,之后恢复该函数的执行,所以可重入的函数,简单来说就是可以被中断的函数;ISR本身也应该是可重入的函数。 并发 在并发服务器中,一个函数在被多个任务调用的过程中,任务在调用时不必担心数据是否会...