ヒープの破損をデバッグするための手法を概説したこの興味深い記事を読んだ後、自分のニーズに合わせてそれをどのように調整できるのか疑問に思い始めました。基本的な考え方は、メモリのページ全体を割り当てるためのカスタムmalloc()を提供し、それらのページのメモリ保護ビットを有効にして、書き込み時にプログラムがクラッシュし、問題のある書き込み命令が動作に巻き込まれるようにすることです。 。サンプルコードはLinuxではC(mprotect()は保護を有効にするために使用されます)であり、これをネイティブC++およびWindowsに適用する方法について興味があります。VirtualAlloc()やVirtualProtect()は有望に見えますが、使用シナリオがどのようになるかはわかりません。
Fred *p = new Fred[100];
ProtectBuffer(p);
p[10] = Fred(); // like this to crash please
Windowsのメモリ破損をデバッグするための専用ツールの存在を認識していますが、このアプローチを使用して「手動で」それを実行できるかどうかはまだ興味があります。
編集:また、これはWindowsでの良いアイデアですか、それとも単なる面白い知的演習ですか?