尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Testbed静态分析常见问题总结
静态代码检测遇到的一些问题总结_construct leads to infeasible code-CSDN博客一、函数必须有返回值原因1、如果一个函数声明为返回某种类型例如int、float或其他用户定义的类型但没有在函数体中提供返回值那么这个函数的行为是未定义的这通常会导致编译错误2、对于这种情况程序的行为是不可预测的。执行环境可能会填充任意的数据到函数的返回值中这取决于栈上当前的位置和内容以及编译器的具体实现。这种情况下函数的结果可能每次运行都不同甚至在同一台机器的不同时间运行也可能得到不同的结果。举例代码xxx函数a()没有返回值代码p.c中函数b的实现为jja();//a没有返回值赋值给jj实现错误二、判等和赋值混淆if或while条件判断中将判等“”写为赋值“”判断条件后执行操作语句中将赋值“”写为判等“”。三、内存缺陷泄露分析1、排查“只申请不释放”的场景比如 malloc/calloc/realloc 后未对应调用 free 或 free 前指针被覆盖如指针重新赋值原内存地址丢失。2、避免“重复释放”同一内存地址调用多次 free 和“野指针释放”指针声明后未赋值直接释放。案例指针重新赋值原内存地址丢失#include stdlib.hint main() {int *p (int*)malloc(4 * sizeof(int)); // 申请内存p指向地址Aif (p NULL) return 1;// 问题p直接指向新地址栈上变量a原地址A的内存无人指向无法释放int a 5;p a;free(p); // 此处free的是a栈内存而非原申请的堆内存原堆内存泄露return 0;}3、重点查条件判断、异常处理如 goto 跳转、函数提前 return 跳过 free 比如 if 块内申请内存 else 块未处理直接退出函数导致内存未释放。四、指针使用前未判空不能直接给空指针赋值因为空指针 NULL 指向内存中不合法的地址直接赋值会导致未定义行为程序崩溃、数据损坏等。五、哪些常见静态分析问题在GJB8114规则中属于必须修改GJB8114中shall规则必须改should规则非必须改常见必改问题举例1、函数返回值类型和函数定义类型不一致2、if...else if 缺少else分支必须加else的原因如下a.局部变量如果使用前只声明未定义只在if/else if里赋值漏掉else就会存在未赋值的路径编译报错。b.所有条件都不满足时加else可以捕获异常、防止逻辑漏洞3、swich缺少default必须加default原因如下a.电磁干扰、硬件故障、总线异常、时序异常会导致读到不在case范围内的非法值加default用于捕获异常4、局部变量未显式初始化5、#define 进行了重复定义#define MAX 100#define MAX 2006、宏改关键字#define int long7、宏重定义类型typedef int mytypetypedef float mytype8、无参数函数括号内未填写viodvoid Fun(){} 括号中缺少void
RELATED

相关推荐

免费LLM API资源大全:企业级AI应用的成本革命与自动化管理方案

免费LLM API资源大全:企业级AI应用的成本革命与自动化管理方案

免费LLM API资源大全:企业级AI应用的成本革命与自动化管理方案 【免费下载链接】free-llm-api-resources A list of free LLM inference resources accessible via API. 项目地址: https://gitcode.com/GitHub_Trending/fre/free-llm-api-resources 在人工智…

📅 2026/8/24 14:58:03
BBWEYY专业服务企业独立站获客策划案,含零代码SAAS、AI编程、源码定制交付

BBWEYY专业服务企业独立站获客策划案,含零代码SAAS、AI编程、源码定制交付

独立站建设与增长策划案BBWEYY专业服务企业独立站获客策划案适用于咨询、培训、设计与企业服务机构的信任转化方案适用对象咨询、设计、教育培训、软件服务及专业机构项目目标通过专业内容和案例建立信任,持续获取预约与咨询线索建议周期4—6周首期上线方案模式BBWE…

📅 2026/8/24 14:58:02
SimpleNES技术深度解析:构建高效NES模拟器的完整实践指南

SimpleNES技术深度解析:构建高效NES模拟器的完整实践指南

SimpleNES技术深度解析:构建高效NES模拟器的完整实践指南 【免费下载链接】SimpleNES An NES emulator in C 项目地址: https://gitcode.com/gh_mirrors/si/SimpleNES SimpleNES是一款用C编写的NES(任天堂娱乐系统)模拟器,…

📅 2026/9/5 22:05:00
MORE NEWS

更多资讯

📰

GPUI Shell 能力模型实战:从默认拒绝到最小授权 —— gpui-shell 的能力清单、存储与沙箱机制解析

GPUI Shell 能力模型实战:从默认拒绝到最小授权 —— gpui-shell 的能力清单、存储与沙箱机制解析 【免费下载链接】gpui-kit Rust GUI components for building fantastic cross-platform desktop application by using GPUI. 项目地址: https://gitcode.com/Git…

📰

react-native-worklets 特性开关(Feature Flags)完全指南:静态/动态配置、已知 Flags 与跨运行时堆栈追踪

react-native-worklets 特性开关(Feature Flags)完全指南:静态/动态配置、已知 Flags 与跨运行时堆栈追踪 【免费下载链接】react-native-reanimated React Natives Animated library reimplemented 项目地址: https://gitcode.com/GitHub_…

📰

EIP-2696 详解:JavaScript `request` 方法 RPC 传输标准与 Ethereum Provider 接口实践

EIP-2696 详解:JavaScript request 方法 RPC 传输标准与 Ethereum Provider 接口实践 【免费下载链接】EIPs The Ethereum Improvement Proposal repository 项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs EIP-2696(JavaScript request…

📰

F´(F Prime)GDS 插件开发实战指南:从 SELECTION 到 FEATURE 插件的完整实现

F(F Prime)GDS 插件开发实战指南:从 SELECTION 到 FEATURE 插件的完整实现 【免费下载链接】fprime F - A flight software and embedded systems framework 项目地址: https://gitcode.com/GitHub_Trending/fpr/fprime F(…

📰

Klipper CAN 总线通信协议深度解析:节点寻址、管理消息与数据帧格式

Klipper CAN 总线通信协议深度解析:节点寻址、管理消息与数据帧格式 【免费下载链接】klipper Klipper is a 3d-printer firmware 项目地址: https://gitcode.com/GitHub_Trending/kl/klipper 本篇技术指南以 Klipper 固件仓库中的 CANBUS_protocol.md 为骨架…

📰

从零搭建实时语音 AI 智能体:LiveKit Agents 完整实战指南

从零搭建实时语音 AI 智能体:LiveKit Agents 完整实战指南 【免费下载链接】agents A framework for building realtime voice AI agents 🤖🎙️📹 项目地址: https://gitcode.com/GitHub_Trending/agen/agents 想做一个能…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬