падает с ошибкой?
int* a = new int[3]{1, 2, 3};
for (int i = 0; i < 3; i++) {
std::cout << &(a[i]) << std::endl;
}
int* b = a;
delete[] a;
for (int i = 0; i < 3; i++) {
std::cout << &(b[i]) << std::endl;
}
> в случае указания UB кода поведение админов непредсказуемо
потомучто ub?
UB -- оно такое! UB это чудо! Оно может все что угодно! Но его повеление не зависит от тебя, вот в чем проблема. UB может не работать, но не обязано не работать. Конкретно тут идёт доступ к уже освобождённой памяти, но память может вернуться операционной системе, а может остаться в хипе CRT для последующего выделения этой же программе. Видимо, именно так и происходит в данном случае
Обсуждают сегодня