Я сделал следующую программу:
int main() {
int* p = new int[10];
delete[] p;
p[0] = 0;
return 0;
}
Затем я выполнил эту программу с включенным gflags:
C:\tmp\Test2\Debug>"C:\Program Files\Debugging Tools for Windows\gflags.exe" -p /enable Test2.exe /full
path: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
test2.exe: page heap enabled
C:\tmp\Test2\Debug>test2
C:\tmp\Test2\Debug>
Как и ожидалось, программа вылетает.Запустив его с отладчиком, я вижу, что он вылетает в этой строке:
p[0] = 0;
Это то, что я ожидал.
Однако эта программа не вылетает:
int main() {
int* p = new int[10];
p[10] = 0;
return 0;
}
Почему gflags не ловит этот заграничный доступ?Какого рода ошибки кучи обнаруживаются gflags и какие ошибки не обнаруживаются?