Здравствуйте, Owen, Вы писали:
V>>удаляется объект размером с B? O>Так здесь понятно, что по деструктору определяет, а вот массив не имеет деструктора...
А как он определяет, что это B, а не A?
Деструктор-то не виртуальный
Вообще-то читай внимателеьнее что тебе пишут таки...
Тебе уже всё объяснили очень подробно и довольно квалифицированно
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Operator delete[]
От:
Аноним
Дата:
19.09.07 17:13
Оценка:
Здравствуйте, Owen, Вы писали:
O>Здравствуйте, Awaken, Вы писали:
O>>>Сори за тупой вопрос. Как он опредиляет длину удаляемого участка памяти?
A>>по дескриптору занятого блока. A>>как именно организованы эти дескрипторы, зависит от реализации, A>>но скорее всего он находится с минусовым смещением от адреса занимаемого объектом
O> У ты дал. Деструктор находится там где любая функция... Если виртуальный то его адрес в таблице виртуальных функций, если нет, то его компилятор знает где искать. O>Я имел в виду длину вектора удаляемого, а не размер самого обьекта
Здравствуйте, CreatorCray, Вы писали:
CC>В VC7.1 new [] и delete[] работает примерно так: CC>псевдокоТ
Только тут надо заметить, что псевдокод приведён для описания того кода, который генерирует компилятор на месте конструкции new[] и delete[].
а operator new[] и operator delete[] только выделяют и освобождают память, то есть в псевдокоде надо было вызывать не free, например, а operator delete[]...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Пётр Седов, Вы писали:
ПС>Насколько я знаю, деструкторы вызываются в обратном порядке.
Пардон, упустил этот момент.
Вот он вред копипаста! Скопировал из того кода, что написал для new[] и не обратил внимания.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока