c - 是否有任何方法可以测试询问过程是否已分配地址
问题描述
例子:
void *a = malloc(4);
...
free(a);
...
*a = 5;
例如,在 c 中,有没有办法使用某种系统调用或其他东西来捕捉这个错误?(假设这是设置为只能在运行时检查)
if(isalloc (a))
也许?
我想知道,因为c ++已经以某种方式解决了这个问题,除了它们有例外。这可以在c中完成吗?也许存在一个简单的功能,但我找不到。
解决方案
您可以自己创建这样的设施。
#include <stdlib.h>
#include <stdio.h>
char _unallocated[] = "";
#define free(p) free(p); p = _unallocated
#define isalloc(p) (p && p != _unallocated)
int main() {
void* a = _unallocated;
printf("%d\n", isalloc(a));
a = malloc(4);
printf("%d\n", isalloc(a));
free(a);
printf("%d\n", isalloc(a));
}
推荐阅读
- javascript - How can I change the collisionFilter of an object so it can no longer interact with MouseConstraint (MatterJS)
- php - Stripe API PHP,获取所有付款方式(我每次都需要客户 ID 吗?)
- python - 更改熊猫数据框格式
- dataframe - 从数据块中的大型 pyspark 数据帧或 koalas 数据帧返回一行的最快方法是什么?
- r - 在 R 中,按顺序对列表的每个元素进行排序,并使用该顺序对列表中的数据进行采样
- delphi - Delphi FMX FormStyle StayOnTop only while app is active
- python - How to print first 5 lines of a sorted csv file?
- amazon-web-services - 如何在 AWS VPC 中找出面向 Internet 的资源(EC2、RDS 等)?
- arrays - 在C中将int拆分为char数组
- xaml - xamarin datatemplateselector: not valid XAML name