不可重入函数
<h2>常见的不可重入函数</h2>
<p>满足下面条件之一的多数是不可重入函数:</p>
<p>(1)使用了静态数据结构或者全局变量;</p>
<p>(2)调用了malloc或free;</p>
<p>(3)调用了标准I/O函数;标准io库很多实现都以不可重入的方式使用全局数据结构。</p>
<p>(4)进行了浮点运算.许多的处理器/编译器中,浮点一般都是不可重入的 (浮点运算大多使用协处理器或者软件模拟来实现。</p>
<p>(5)调用printf。</p>
<p>不可重入函数在多线程场景下使用可能会有问题,需要谨慎。常见的不可重入函数:</p>
<pre><code class="language-c">rand, srand,
setlocale,
getenv, getenv_s,
gethostbyname, gethostbyaddr,
strtok, strerror,
inet_ntoa,
asctime, ctime, localtime, gmtime,
tmpnam,
mbrtoc16, mbrtoc32,
c16rtomb, c32rtomb,
atomic_init</code></pre>
<h2>参考文档</h2>
<p>> <a href="https://zhidao.baidu.com/question/141509392.html">https://zhidao.baidu.com/question/141509392.html</a>
> <a href="https://blog.csdn.net/zhongleyun/article/details/120837574">https://blog.csdn.net/zhongleyun/article/details/120837574</a></p>