質問: getchar();// キー入力を待つ puts("Done!"); return 0; } ```
回答: OSレベルでの内部処理が**コピーオンライト**となっている可能性があります(大きなメモリを確保する場合、`malloc`自体で直接管理せずに、OSの管理に丸投げする、という実装になっていることもあります)。 メモリを確保した時点では空のページを共有して指すようにしておいて、書き込んだ瞬間に必要なメモリをコピーして確保する、というような手法です。 > > callocで確保したメモリ領域のアドレスはそれなりに正しそうなのですが > > > Windowsには**仮想メモリ**がありますので、ポインタの指す実際のメモリは共有されていたり、あるいはディスクにスワップされてメモリには存在しなかったり、ということがふつうに発生しえます。