首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 31 毫秒
1.
李树芳  安金霞  刘洋  陈良 《计算机科学》2017,44(11):191-194
近年来,越来越多的安全关键软件系统运行在国产Linux操作系统上,其中大多数采用C++开发,而C++正在扩展新版语言规范,已有的覆盖率统计插装工具不能满足要求。给出一种基于Clang/LLVM的C++源代码覆盖率统计插装方法,利用开源社区Clang/LLVM库提供的C++源代码解析和操作功能,构建面向C++源代码的语句、分支和MC/DC覆盖率统计框架,在运行时采集覆盖率信息并进行统计分析,输出覆盖率分析报告。实际案例表明,该方法简易实用,能够满足真实工程软件的覆盖率测试分析需求。  相似文献   

2.
通过分析C++语言本身具有的特点,在此基础上分析了C++数据库的类型,通过不同类型之间的相互转换的方式,具体分为隐式类型转换和显式类型转换,详细介绍了语法应用及其特点.结合C++以上数据类型的特点,程序设计出良好的方案,达到解决数据库资源流失问题.  相似文献   

3.
引用是给某个对象(包括变量)起的别名,因此它不能独立存在,这一点与指针不同,指针可以不指向任何对象。C++要求说明引用时必须初始化,即与某个对象联系起来,这种联系是不能改变的。同一对象可以同时有多个引用,对象与引用的关系为1∶n(n≥0)。 引用作为函数参数时,表明该参数是变量参数,而不是值参数;指针作为函数参数时,只是模拟变量参数。在很多应用中,指针和引用是可以相互取代的,C++编译器内部就是把引用作为指针处理的。当然引用有其独特的用途,否则C++就不会引进它了,但如果没有正确理解引用的概念,在编程时会给程序员带来一些迷惑。 C++要求非单目运算符以友元身份重载时,其  相似文献   

4.
C++编程实现可动态创建的无限维数组   总被引:1,自引:0,他引:1  
经常用到数组变量的C++程序编写人员肯定会碰到这样的问题:当数组的维数和大小只有在程序运行后才能知道时,如何声明该数组变量呢?由于数组变量声明时必须通过显式指定其大小(如:int A[2,3])或通过初始化(如:int A[]={{0,0},{0,0},{0,0}})隐式指定其大小,才能使编译器知道如何为该数组分配内存,所以使用普通的数组声明无法在程序运行过程中动态创建某一事先不知道大小的数组。当然,也可以有些变通的方法,如先创建一个足够大的数组等等,但这些无疑会浪费系统资源,降低程序效率。为此,笔者利用C++构造了一个可动态创建的、维数不限的数组模板类,以解决这个问题。  相似文献   

5.
编译器后端移植是目前嵌入式系统研究的重要领域,如何快速实现编译器后端移植仍然是嵌入式系统研究的热点。采用新的编译器架构LLVM,移植NiosⅡ处理器来分析LLVM快速后端移植架构。使用LLVM后端移植架构的TableGen描述NiosⅡ体系结构例如指令、寄存器等,使用完备LLVM C++函数库实现复杂或特殊的操作。TableGen与C++函数库互相配合,最终实现LLVM架构对NiosⅡ后端的支持。实验结果表明与GCC编译器后端移植方法相比,基于LLVM架构的编译器后端移植方法的工作量减少了64.2%~83.9%,大大节省后端移植时间。  相似文献   

6.
JNI技术支持Java与本地C/C++的相互调用,在Android等混合语言实现的系统中有着广泛应用,但语言之间的安全特性差异使其成为安全薄弱环节,现有的分析方法难以处理多语言相互调用产生的安全缺陷.以JNI调用中易产生的内存泄漏为例,开展Java/C++JNI跨语言分析的研究.采用扩展的Java Bytecode(Bytecode*)指令作为C++语义的解释来消除跨语言分析的障碍.围绕JNI调用中内存泄漏的问题,做了以下3方面工作:1)定义兼容Java/C++语言的分块内存模型;2)基于LLVM/LLJVM,设计实现了C++到Bytecode*的翻译策略;3)建立方法调用图,提取方法摘要,利用过程间分析方法检测JNI调用中的内存泄漏.针对具有典型内存泄漏特征的JNI实例翻译检测表明,该工作能够准确检测出Java/C++混合语言中的内存泄漏,对于JNI混合语言编程的理解和漏洞分析具有重要价值.  相似文献   

7.
在C 语言中,关键字const一般称为常量说明符,它既可以说明变量也可以说明函数。下面详细介绍一下它的几种用法。 1.放在自动变量或外部变量的声明之前,用来冻结此变量。const类型变量在声明时必须赋初始值,在以后的语句中不允许再对此变量进行重新直接赋值。在下述表达式中,对x的重新赋值语句在编译时会出错(尽管赋值内容相同)。 const float x=13.4; x=13.4;//不合法 const也可放在数组变量或结构变量之前。下述语句声明了一常量数组,所以不允许对数组的内容重新赋值。  相似文献   

8.
RTTI(Run-Time Type Information,运行时类型识别)是C++等面向对象编程语言的一种重要语言机制。目前流行的C++编译器中的RTTI实现机制在应用中存在一些不足,主要体现在动态类型转换操作的低效率和RTTI实现机制的不可定制性。本文通过分析研究标准C++的RTTI机制,提出一种基于元数据和宏,以可定制和高效率为目标的RTTI实现方法。在文章的最后仿真这种RTTI实现方法,证明其可行性和高效性(仿真数据其效率比为5.8)。  相似文献   

9.
裘宗燕  程羽心 《程序员》2002,(11):86-89
C++通过其标准流库支持类型安全的输出。对于简单输出而言,标准输出功能很容易使用。然而,如果编程中需要细致控制输出格式,标准库的输出功能就很不方便了。本文提出一种类似C输出格式控制的扩充设计,这种设计不难通过C++的程序风格实现。它易于使用,同样具有类型安全性。利用这种格式化输出功能,我们将很容易维护程序中输出格式的一致性。此外,这种格式化输出功能也能很好地集成于现行常规输出操作之中。  相似文献   

10.
C语言教学中强制类型转换运算运用探讨   总被引:1,自引:0,他引:1  
毛丽娜 《现代计算机》2009,(12):135-136,146
在C语言中有一个强制类型转换运算符,它为C语言中的数据类型转换带来很大的方便,它不仅可以在不同类型数据之间进行赋值,在运算中发挥强大的作用,还可以运用在其他方面产生特殊作用。通过程序例子讨论强制类型转换运算在函数调用时实参与形参类型如何保持统一,计算时如何保持结果的精度及指针类型转换等几方面的运用。  相似文献   

11.
严忠林 《计算机工程》2011,37(16):62-64
C指针的处理是C to Java代码自动转换系统中一个重要而困难的问题。已有的方法大多不能处理含有技巧的指针代码,转换生成的代码难以理解,往往无法正确执行。基于此,提出一种可用Java实现C指针所有功能的方案,该方案在类型转换后不改变原程序结构,并保持尽可能高的运行效率。示例分析表明,运用该方法可使各种类型的C指针运用都能自动转换为执行正确、结构清晰、修改方便、运行快捷的Java代码。  相似文献   

12.
函数是C++程序设计教学的重要部分,利用函数定义选定的形参可以是基本类型变量或对象、引用形式、指针变量或数组三种形式,因此对应函数参数传递的方法有传值法、传引用法以及传地址法.通过对函数定义和函数参数传递方法的分析,结合教学实际设计容易理解适用于理论课和上机实训课的教学过程,并做出相应的教学提示,归纳总结函数编程时参数选择的方法和教学体会.  相似文献   

13.
C语言因其功能强大,使用灵活等诸多优点而被广泛使用,但C语言的编译环境有一些不完善的地方,常常出现一些意想不到的错误,给编程者带来许多木便。本文谈谈笔者在用C语言编程时经常遇到的一些问题及解决方法。1数据类型转换问题C语言允许不同类型的数据间进行混合运算,运算时系统会自动进行类型转换,但转核的依据是表达式中各运算量的类型,而不管运算结果的实际类型是什么。这样,当运算结果的实际类型和运算量的类型不符时,就会出错。请看下面的例子。例1/*求10以内自然数的倒数和*/。n()】nitn;flodallffi=0;for(=1;+…  相似文献   

14.
该文介绍了一种C++程序的分层切片方法。通过构造系统程序层依赖图、类层依赖图、方法层依赖图和语句层依赖图,对C++程序进行分层切片,有效地表示了C++中的单重继承、多重继承、多态和动态绑定,该方法比其它C++切片技术更清晰地描述了C++程序中类之间的各种关系和消息传递机制。  相似文献   

15.
古辉  乔凯旋 《计算机系统应用》2012,21(7):236-239,253
研究了C++中的指针机制、以及指针类型对象(变量)在多个源程序代码文件中关联关系。基于信息提取和结果整理,计算机可视化实现和表示C++中的指针机制和多源程序代码文件的关联关系。研究了抽取结果的存储机制和基于该机制的自动排序源文件引用关系的方法,最后提出了一种手工调整图元布局的算法,作为自动排序算法的补充。对实际代码分析的结果表明该方法利于程序分析并支持对源代码的辅助理解。  相似文献   

16.
王昕 《程序员》2004,(1):64-66
在即将来临的.NET 2.0中,Microsoft对它进行了很多的修改,其中也包括被广大程序员所关注的C++。作为微软的C++语言设计架构师,Lippman向我们展示了在.NET 2.0中许多新的变化,其中最引人瞩目之一就是一种全新声明引用类型。这是原来C++中的写法: ∥original language object ☆ obj=0; 而在.NET2.0中将会被要求修改成这样: ∥revisied language object ^ obj =nullptr; 这样做的意义何在呢?我们为什么要使用,以及为什么我们需要在C++中新增一个语法条目呢? Stan Lippman说到:  相似文献   

17.
静态分析由于并不执行源代码,导致无法获取变量在实际运行中的取值,进而对一些和变量取值相关的缺陷检测带来了一定困难.利用符号执行和区间运算技术,虽然可以模拟程序实际执行时变量的可能取值范围,但对于结构体、数组等,由于不能对其成员进行独立描述,导致数据流无法支持域敏感分析,对和其成员变量相关的缺陷的检测难以实现,产生很多漏报.基于域敏感指向分析的区间运算模型,在域敏感指向分析模型的基础上对其进行了改进,将复杂数据类型拆分成独立的成员变量进行分析,并提出一种关联抽象取值集的类型系统,该系统可以保守的描述程序在动态执行时变量的可能取值.结合赋值语句的抽象语法定义,给出了该类型系统在数据流计算时的具体推导算法,并将其应用在缺陷检测系统(DTSGCC和DTSCPP)中.选用DTSCPP作为实验平台,对6个C++开源工程进行了测试,并对其数据进行了统计分析,结果表明该方法可以减少漏报,且测试效率与非域敏感版本相当.  相似文献   

18.
在使用C++语言开发软件系统的过程中,数据转换是经常遇到的问题,例如将多种数据类型的变量转换为字符串形式输出,虽然已经有大量的库函数可以处理类似的问题,但是面对用户自定义的类型或用户特定需求是却只能逐个编写对应的处理函数,主要探讨使用C++模板编程技术来解决数据转换的问题。  相似文献   

19.
C、C++、Java、C#中参数传递方式比较   总被引:1,自引:0,他引:1  
龚雄兴 《福建电脑》2005,(11):58-58,37
通过实例的比较。说明函数(方法)调用时,C中总是传值的,C++中有传值和传引用两种方式,而Java中的变量分简单类型和引用类型两种,它在方法调用中,也总是传值的,在C#中参数的传递也分传值和传引用两种。  相似文献   

20.
C#是由C和C++派生出的一种简单、现代、面向对象和类型安全的编程语言。本文讨论C#与C++的主要区别,以便熟悉C++的程序开发者能够快速掌握C#的程序设计。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号