我正在尝试调试一个崩溃问题,其中memcpy
试图访问一个不存在的内存位置并失败了。以下是问题代码的简化版本:
void func_foo(int **a) {
int *b, c;
if (*a) {
b = *a;
}
memcpy(&c, b, sizeof(int));//this crashes because address "b" is not accessible.
}
我的问题是:在尝试进行memcpy
之前,是否有一种方法可以检查内存是否可访问?或者是否有其他保护机制可以防止崩溃?如果不检查**a
,在这种情况下也会导致崩溃吗?