この場合、reallocは失敗する可能性がありますか?
int *a = NULL;
a = calloc(100, sizeof(*a));
printf("1.ptr: %d\n", a);
a = realloc(a, 50 * sizeof(*a));
printf("2.ptr: %d\n", a);
if(a == NULL){
printf("Is it possible?\n");
}
return (0);
}
私の場合の出力は次のとおりです。
1.ptr: 4072560
2.ptr: 4072560
したがって、「a」は同じアドレスを指します。では、reallocチェックを強制する必要がありますか?
後で編集:
- WindowsXPでのMinGWコンパイラの使用。
- Linuxのgccと同様の動作ですか?
後で編集2:この方法で確認しても大丈夫ですか?
int *a = NULL, *b = NULL;
a = calloc(100, sizeof(*a));
b = realloc(a, 50 * sizeof(*a));
if(b == NULL){
return a;
}
a = b;
return a;