![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
ano360 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
Встречал такие формы написания делите :delete p, где p-указатель и delete [] p, оба работают, не вызывая ошибок, так в чём же отличие?
-------------------- Жизнь есть. |
|||
|
||||
Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 6 Всего: 29 |
delete[] - для массивов.
Толко для простых типов, для классов могут быть проблеммы с вызовом деструктора. |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 3 Всего: 106 |
в том, что первый оператор удаляет только один объект по адресу p, а второй - удаляет массив объектов, созданных оператором new[], т.е., конкретно, разница заключается в том, будут ли последовательно вызваны деструкторы у удаляемых объектов или нет. В delete[] p - будут, а в delete p будет вызван только один деструктор, так что если это массив, то остальные объекты останутся без деинициализации.
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
slava72 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 23.6.2006 Репутация: 1 Всего: 1 |
new T - вызывает operator new()
new T[] - вызывает operator new[]() опрераторы delete и delete[] парные к new - соответственно должен вызывать нужный в зависимости от того, чем паспределял память. Их сам можешь переопределить для какого нибудь класса (при очень большом желании и понимании что делаешь ![]() void* operator new(size_t) - классический void* operator new(size_t, void*) - оператор размещения (используется в частности std::контейнерами) void* operator new(size_t, std::nothrow) - не генерит исключений (возвращает 0 при нехватке памяти) и парные им delete |
|||
|
||||
ano360 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
спасибо
-------------------- Жизнь есть. |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Вот, поиграйтесь
![]()
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |