Если я пойду ...Программа вылетает при удалении указателя, указывающего на кучу?
int *foo = new int;
foo += 1;
delete foo;
Большую часть времени он выходит из строя. Для этого есть причина? Я пытаюсь указать точку указателя на одно место вперед (4 байта). Благодарю.
Редактировать (шесть месяцев спустя): Это был первый вопрос, который я задал на SO, и это был глупый вопрос и заслужил downvotes. Его можно удалить, если он не предназначен для учащихся. Я действительно говорил о распределении int из четырех байтов в куче, а затем переместил указатель на четыре байта вперед, а затем удалил указатель int, по сути, уничтожив, что Бог знает, что приводит к неопределенному поведению. Спасибо за вашу помощь.
Что бы вы ожидаете этот код делать? –
Вы удаляете указатель на (возможно) нераспределенный адрес памяти; конечно, это сбой. – GoBusto
Я узнал, что после каждого «нового» вам нужно использовать «delete», значит, это означает, что если вы выделяете память в куче, вы не можете переместить указатель? Или сделать это пустой указатель, прежде чем удалять это ответ? – Zebrafish