Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Jazz411
85 / 33 / 3
Регистрация: 12.03.2011
Сообщений: 234
Записей в блоге: 2
#1

delete[] и принцеп его работы - C++

12.02.2013, 19:41. Просмотров 258. Ответов 3
Метки нет (Все метки)

Доброго времени суток

Меня интересует принцип работы delete[] ведь когда мы его вызываем, то мы не указываем размер массива, а лишь ссылаемся на него. Мне сказали что для каждой переменной(если я прав) есть служебная часть где собственно и хранится основная информация, но для нас она не доступна. Ясное дело в гугле я не нашел, так что если кому что известно про эту спец. часть, напишите сюда или дайте ссылку.

Заранее благодарен
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 19:41     delete[] и принцеп его работы
Посмотрите здесь:

C++ new delete
C++ delete this
C++ delete[]
Подскажите, как очистить файл, после его работы C++
new - delete C++
C++ new[] - delete[]
C++ new и delete
New/Delete C++
C++ Есть массив в виде табличных данных, как его поделить на отдельные элементы для дальнейшей работы?
New delete C++
C++ Объясните правила работы с delete с указателями и массивами (корректное освобождение выделенной памяти)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1605 / 997 / 118
Регистрация: 27.09.2009
Сообщений: 1,923
Завершенные тесты: 1
12.02.2013, 20:03     delete[] и принцеп его работы #2
Реализация зависит от компилятора. Это в общем-то технические детали, в которые необязательно углубляться, достаточно знать, что эти конструкции делают и с какими гарантиями.
Обычно new [] записывает в области памяти размер выделяемого массива, а delete [] его читает и действует соответственно (уничтожает элементы в порядке от конца к началу и освобождает блок памяти). К обычным new и delete это не относится.

Добавлено через 3 минуты
Служебная информация есть далеко не у каждой переменной, а только у тех объектов, которым она необходима (классы с виртуальными функциями и выделенные через new [] массивы - самые очевидные примеры). Большинство переменных чисты и прозрачны как слеза младенца.
Jazz411
85 / 33 / 3
Регистрация: 12.03.2011
Сообщений: 234
Записей в блоге: 2
12.02.2013, 20:09  [ТС]     delete[] и принцеп его работы #3
Nick Alte, большое спасибо Первую часть я и так знал, а вот насчет 2 можно поподробней? А то меня заинтересовала эта спец. часть и как она устроена
Nick Alte
Эксперт С++
1605 / 997 / 118
Регистрация: 27.09.2009
Сообщений: 1,923
Завершенные тесты: 1
12.02.2013, 20:26     delete[] и принцеп его работы #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Спецчасть зависит от конкретных потребностей. Её реализация не конкретизируется стандартом: разработчики компиляторов могут творить что хотят, лишь бы соблюдалось описанное стандартом поведение и гарантии. Например, объект с виртуальными функциями, как правило, содержит vptr - указатель на таблицу виртуальных функций (по сути просто массив адресов функций, создаваемый компилятором для каждого класса, который их использует). Это наиболее общепринятая реализация динамического полиморфизма, однако ничто не мешает реализовать такое же поведение как-либо иначе, оставаясь в рамках стандарта. Могут быть и какие-то дополнительные vptr в середине объекта при множественном наследовании, служебные поля со смещениями при виртуальном наследовании. В общем и целом соблюдается принцип минималистичности: служебную информацию добавляют только когда она необходима и ровно столько и в том составе, в каком необходимо. Ничего лишнего.
Yandex
Объявления
12.02.2013, 20:26     delete[] и принцеп его работы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru