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

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

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

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

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

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

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

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

delete[] - C++
Здравствуйте! Имеется след. код: char* values = new char; values = '\0'; ////ещё код//// delete values; Вопрос - почему...

New delete - C++
написал код ну там в блоке перегрузки оператора добавил new void operator=(char* t) { int tl=strlen(t); a=new char; ...

new - delete - C++
Добрый день. Выделяю память для записи 10 значений координат точки. #include <iostream> using namespace std; class point { ...

new delete - C++
здраствуйте! назрел вопрос class cls1 { ... ... } class cls2 { ... cls1 *pt = new cls1();

Операции new и delete - C++
Привет всем! У меня вопрос по указателям. Вот я создал массив указателей. Через new я каждому присвоил значение 0. int* ptr; for...

функции new, delete - C++
здравствуйте. можете показать полную реализацию функции new , delete?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 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 можно поподробней? А то меня заинтересовала эта спец. часть и как она устроена
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2013, 20:26     delete[] и принцеп его работы
Еще ссылки по теме:

Коротко по delete - C++
char * ch = NULL; delete ch; Этот код ошибки компилятора не вызывает, является ли данное решение верным? Если да, то delete ch;...

массивы, new и delete - C++
Здравствуйте. Подскажите пожалуйста, чем отличается допустим символьный массив char s="hello"; от char *s1=new char ? Тоесть в смысле...

delete указателя - C++
valueOfWordS - указатель, член класса String_value, конструктору же этого класса передается указатель на переменную того же типа: ...

Указатели и delete - C++
Добрый вечер! Возникла проблема с delete, почему-то при удаление объекта он не заходит не в один деструктор. Хотелось, чтобы Вы помогли, а...


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

Или воспользуйтесь поиском по форуму:
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 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