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
とクラッシュも発生しますか?