首页 > 其他分享 >c语言的可重入和不可重入函数

c语言的可重入和不可重入函数

时间:2023-08-23 18:35:09浏览次数:42  
标签:重入 malloc 函数 第一次 浮点 printf 语言

先贴上一篇优秀的博文链接:

C语言之可重入函数 和不可重入函数_c 可重入函数_KiranWang的博客-CSDN博客

 

 

总结:不可重入函数的四种情况

1.静态数据结构:如静态局部变量活全局变量

2.malloc()或者free()函数
因为这两个函数都会操作全局的链表,如果第一次malloc没结束时,再被一次malloc打断,那么两次malloc申请的空间起始地址可能会相同。


3.调用了标准的I/O函数的
如printf()函数,因为printf调用了FILE *stdout全局缓冲区,如果第一次printf()未执行完,再次执行printf(),那么stdout缓冲区的数据将被改变,第二次printf()执行完后,第一次的printf的内容将发生改变。


4.进行了浮点运算
浮点运算一般会使用浮点寄存器,如果第一次浮点计算未完成,被打断再次执行浮点计算,那么第二次执行完后,再返回第一次浮点计算,将会出现错误结果

 

所以为了预防不可重入函数发生错误,在需要重入的函数中排除以上情况,或者加入锁、关中断、进入临界保护区, 防止重入

标签:重入,malloc,函数,第一次,浮点,printf,语言
From: https://www.cnblogs.com/Charles-Hui/p/17652478.html

相关文章

  • 无涯教程-PHP Mock Test函数
    本节介绍了与PHP相关的各种模拟测试。您可以在本地计算机上下载这些样本模拟测试,并在方便时离线解决。每个模拟测试均随附一个模拟测试键,可让您验证最终分数并为自己评分。MockTestIMockTestIIMockTestIIIMockTestIVQ1-关于PHP,以下哪项是正确的?A-PHP是......
  • memmove函数
    参考引入问题intmain(){intarr1[10]={1,2,3,4,5,6,7,8,9,10};my_memcpy(arr1+2,arr1,20);for(inti=0;i<10;i++){printf("%d",arr1[i]);}return0;}上面一段代码我们的目的是想把到5的数字共20个字节拷贝到原来3到7的数字的位置上。然后我们看到其......
  • 解锁ChatGLM-6B的潜力:优化大语言模型训练,突破任务困难与答案解析难题
    解锁ChatGLM-6B的潜力:优化大语言模型训练,突破任务困难与答案解析难题LLM(LargeLanguageModel)通常拥有大量的先验知识,使得其在许多自然语言处理任务上都有着不错的性能。但,想要直接利用LLM完成一些任务会存在一些答案解析上的困难,如规范化输出格式,严格服从输入信息等。因此,在......
  • 精进语言模型:探索LLM Training微调与奖励模型技术的新途径
    精进语言模型:探索LLMTraining微调与奖励模型技术的新途径LLMsTrainer是一个旨在帮助人们从零开始训练大模型的仓库,该仓库最早参考自Open-Llama,并在其基础上进行扩充。有关LLM训练流程的更多细节可以参考【LLM】从零开始训练大模型。使用仓库之前,请先安装所有需要的依赖:......
  • isEmpty工具函数
    在**项目开发中,需要在对未知数据类型做判空处理,期待空值列表:undefined、null、''、NaN、[]、{},注意非空:0、false;而常见的lodash.isEmpty,!value均不能直接满足我们的需求,那么我们需要抽离一个工具函数isEmpty; 接口返回表格字段的数据:表格中使用switch:0(或者false)......
  • 无涯教程-PHP Online Test函数
    该PHP在线测试模拟了真正的在线认证考试。您将看到基于PHP概念的多项选择题(MCQ),将为您提供四个options。您将为该问题选择最合适的答案,然后继续进行下一个问题,而不会浪费时间。完成完整的考试后,您将获得在线考试分数。总问题数-20最长时间-20分钟StartTest参......
  • fstat函数
    功能由文件描述符获取文件的状态头文件#include<sys/stat.h>#include<unistd.h>函数声明intfstat(intfiledes,struct*buf);两个参数分别为:intfiledes:已经打开的文件描述符,通常由open函数返回struct*buf:用来存放fstat所获取的文件的状态。fstat()用来将......
  • fprintf()函数
    fprintf()用于文件操作#include<stdio.h>intfprintf(FILE*stream,constchar*format,...);fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.因此fprintf()可以使得信息输出到指定的文件.比如charname[20]="Mary";FILE*out;out=f......
  • 【C语言基础语法】5. 函数
    一、函数概述1.1函数的作用函数的使用可以省去重复代码的编写,降低代码重复率函数可以让程序更加模块化,从而有利于程序的阅读,修改完善1.2函数的调用:产生随机数调用函数时,需要关心:头文件:包含指定的头文件函数名字:函数名字必须和头文件声明的名字一样功能:需要知道此函数作用后才能调......
  • 无涯教程-PHP Online Quiz函数
    以下测验提供与PHP相关的多项选择题(MCQ)。您将必须阅读所有给定的答案,然后单击正确的答案。如果您不确定答案,则可以使用显示答案按钮检查答案。您可以使用下一个测验按钮检查测验中的新问题集。Q1-关于PHP,以下哪项是正确的?A-PHP可以访问cookie变量并设置cookie。......