例:
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));
}