C语言free空空指针,dmc: Dynamic Memory Check (DMC) , 解决C语言空指针、悬空指针、越界访问、野指针问题的一个方案。...

DMC(Dynamic Memory Check)是一种在C语言运行时检测内存越界、空指针和野指针的解决方案。通过使用特定宏,它可以在不显著影响性能的情况下提升程序的安全性和稳定性。主要API包括基础型(内存分配与释放)、悬挂型(检测悬挂指针)和访问型(边界内读写访问),以及边界扩展接口bound。
摘要由CSDN通过智能技术生成

Dynamic Memory Check (DMC) 动态内存检测

动态内存检测,既在程序运行的时候检测内存的越界,野指针,空指针等问题,可以提高软件的安全性与稳定性。使用宏实现,所以对性能的消耗不大。能够解决rust解决了C语言的问题。

使用守则

所有属于DMC的内容都是以$符号开头的。

每个DMA函数都只能写在单独的一行

DMA函数末尾可以不用加;分隔符

API主要分为3类

一、基础型:处理内存分配与释放

$define(type, name)

指针变量的定义,并初始化为NULL

例:

$define(char *, p) // 相当于char *p = NULL;

$malloc(name, size)

为name指针分配新的内存空间,会检测name的值,如果name不是NULL则抛出提示。然后分配一个新的内存地址给name。 相当于name = malloc(size);

例:

$malloc(p, 32) // 为p分配一个32字节大小的内存

$free(name)

释放name指针的内存地址,首先会检测指针的值,如果为NULL则抛出提示,释放内存后会将指针置NULL,避免野指针问题。相当于free(name);

例:

$free(p) // 将p指向的地址释放

二、悬挂型:处理悬挂指针问题(返回了函数内部的局部变量)

$$

表明需要对该函数进行悬挂指针检测,必须放在函数的开头,$$把{符号替代了。

例&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值