cppcheck配置以检查是否释放了不属于的内存

时间:2019-01-07 18:08:39

标签: static-analysis cppcheck

是否可以将cppcheck配置为在C代码中满足以下条件:

void test1() {
    char *strp = "my string";
    flist *flistp = create_flist();
    flist_put(flistp, strp);
    destroy_flist(flistp);
}

flist_put所做的工作是将strp转移并将内存所有权转移到flistp(稍后,destroy_flist会负责释放该内存)。在上面的代码中,问题在于flist_put无法使用,因为内存属于test1()范围。必须使用flist_set代替,这将代替strp。

注意-以下所有都是封闭源函数:

  • create_flist为flist结构分配内存
  • destroy_flist释放flist结构内存
  • flist_put传递对flist结构的传入指针所指向的内存的内存所有权
  • flist_set复制传入的值并将其添加到flist中,为其(flist拥有的)分配内存

0 个答案:

没有答案