После того, как я искал, как проверить, удален ли указатель в C ++, я обнаружил, что нет определенного способа, какого-то действительно уродливого обходного пути или умных указателей (сначала я хочу понять, как работают нормальные указатели). У меня вопрос, почему происходит сбой C ++, когда я пытаюсь в try / catch показать значение удаленного указателя? не должен ли он обработать сбой и просто напечатать исключение ??
void main()
{
int *a = new int[5];
for (int i = 0; i < 5; i++)
{
*(a + i) = i;
}
for (int i = 0; i < 5; i++)
{
if (*(a + i) != NULL) // useless verify, cuz if it would be NULL, it
//would crash imediately
{
cout << (a + i) << ", " << *(a + i) << endl;
}
}
delete a;
cout << a << ", ";// << *a << endl;
for (int i = 0; i < 5; i++)
{
try{
cout << (a + i) << ", " << *(a + i) << endl;
}
catch (int e)
{
cout << "Error: " << e << endl;
}
}
cin.get();
}