xidianwxm 2022-11-09 14:04
浏览 9
已结题

使用shell正则表达式扫描c++悬空指针情况

背景

因开发编写Linux平台C/C++代码,出现指针未正确释放、类成员指针变量在构造函数未初始化等情况导致进程core。虽然我们通过cppcheck扫描过,但是效果不是很好,想自己写脚本扫描;

代码示例


free p;
p = null;

free p;
 p=NULL;

 free p;
 p = NULL ;

 delete p;
 p = NULL;

free *p;

期望运行结果

free *p; //期望能被扫描出来

**我的解答思路和尝试过的方法 **

shell编写正则表达式扫描代码,扫描分为两步:
1、匹配出 free和delete的代码,记录为T行
2、检查T+1行,是否没有匹配 = NULL;的情况,
符合以上两个条件的行进行输出

\S*(?:free|delete)\s+.*;\s*\n{1,}\s*.*?(?!=\{0,\}NULL\b\{0,\})


实际上没有扫描到,麻烦大家能否给我看看,谢谢; 正则表达式网站 https://regex101.com/r/zhSa64/1

img

free *p;//说明这行指针p被释放,但是没有把p指向NULL,发生悬空指针【导致程序core】

我想要达到的结果

free *p; //期望能被扫描出来

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月17日
    • 修改了问题 11月9日
    • 创建了问题 11月9日

    悬赏问题

    • ¥15 Opencv(C++)异常
    • ¥15 VScode上配置C语言环境
    • ¥15 汇编语言没有主程序吗?
    • ¥15 这个函数为什么会爆内存
    • ¥15 无法装系统,grub成了顽固拦路虎
    • ¥15 springboot aop 应用启动异常
    • ¥15 matlab有关债券凸性久期的代码
    • ¥15 lvgl v8.2定时器提前到来
    • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
    • ¥15 cam_lidar_calibration报错