|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
Выделение памяти...29.12.2009, 09:50. Показов 1583. Ответов 13
Метки нет (Все метки)
Вот решил себе ликбез устроить и возникли вопросы:
1) Почему char* p = "fffff"; не реагирует на delete p 2) Когда надо применять delete, а когда delete []?
0
|
|
| 29.12.2009, 09:50 | |
|
Ответы с готовыми решениями:
13
Выделение памяти, проверка на утечку памяти Распределение памяти. Динамическое выделение памяти выделение памяти |
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
||
| 29.12.2009, 09:55 | ||
|
2) delete[] - удаление массива данных, delete - освобождение только указателя. вроде так, где смаил пожимающий плечами
0
|
||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 29.12.2009, 09:58 [ТС] | |
|
TanT, вот не знаю, поэтому и спрашиваю... я вот вычитал, что если выделение памяти идет new [], то освобождать надо delete [], но ведь и delete в данном случае освобождает память даже, если выделять ее new []
0
|
|
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
||
| 29.12.2009, 10:43 | ||
|
вот на чём основывался я. специально поднял.
1
|
||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 29.12.2009, 10:46 [ТС] | |
|
TanT, это я уже тоже вычитал, но ведь мне ничто не мешает сделать так:
int* mas = new int[23]; ... delete mas; интересно, что происходит в данном случае, а что в delete [] mas; раз уже решил разбираться, то надо как бы до конца выяснить все нюансы...
0
|
|
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
||
| 29.12.2009, 10:53 | ||
|
Но это пока голословно, может где-то прочёл, а где не помню. поищу подтверждение или опровержение.
1
|
||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 29.12.2009, 11:01 [ТС] | |
|
TanT, да мне кажется, что вы все же правы, спасибо за справку, но если найдет, то можно и текст по этому поводу...
0
|
|
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
||
| 29.12.2009, 11:22 | ||
|
1) а) Один знаток утверждает, что между delete и delete[] нет никакой разницы, что просто удаляется указатель и усё б) вот тут идёт бурное обсуждение и проскакивает такая мысль, но до конца не осилил http://alenacpp.blogspot.com/2008/01/delete.html 2) а) вот ещё одна ссылка, и нашёл на одном форуме утвеждается, что сайт не врёт http://www.cppreference.com/wiki/keywords/delete?s[]=delete б) Джесс Либерти "Освой самостоятельно С++ за 21 день" страница 350 пишет конкретно про массив: "если вы забудете установить квадоатные скобки, то из памяти будет удален только первый объект массива".
1
|
||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
||
| 29.12.2009, 11:28 [ТС] | ||
|
0
|
||
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
||
| 29.12.2009, 11:28 | ||
|
В пользу второго варианта :
1
|
||
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
|
| 29.12.2009, 11:53 | |
|
TanT,
а) Один знаток утверждает, что между delete и delete[] нет никакой разницы, что просто удаляется указатель и усё LOL. А этот "знаток" не пробовал Стандарт читать? 5.3.5 ... In the second alternative (delete array), the value of the operand of delete shall be the pointer value which resulted from a previous array new-expression.73) If not, the behavior is undefined.
0
|
|
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
||
| 29.12.2009, 12:22 | ||
|
Может дашь объяснения различию delete и delete[] своими, так сказать, словами, народ интересуется
0
|
||
|
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
|
||||||
| 04.01.2010, 01:08 | ||||||
|
имея код int *a = new int ; мы выделяем память из heap'a и настраиваем указатель на переменную типа int , в таком случае записывать значения мы можем вот так *a = 100, при вызове delete в данном случае мы рушим объект и возвращаем память в heap, но сам указатель можем настроить на другой объект, то есть допустим если он глобальный то он будет жить пока живёт сама программа)
если мы имеем int * a = new int [100] ; то мы выделяем из heap'a память под сто элементов типа int, и настраиваем указатель на первый элемент массива, при delete a, мы рушим только первый элемент и вот эту память возвращаем в heap, если мы имеем не встроенный тип например GAGA * object = new GAGA ; то мы выделяем из хипа память для объекта настраиваем этот указатель на объект ну и в данном случае вызывается конструктор по умолчанию, предположим класс GAGA реализует динамический массив то есть в конструкторе выделяется память под массив ( 100 висячее значение но не в том суть ) деструктор наш рушит массив и возвращает память в хип, то есть если мы напишем delete GAGA; то будет вызван деструктор который разрушит массив и вернёт память в хип и вторым этапом мы разрушим наш дин объект и память которую он занимал вернём в хип. с массивами объектов аналогично. вот маленький пример
0
|
||||||
|
Maniac
|
|||||||
| 04.01.2010, 01:29 | |||||||
|
Могли бы просто пример сделать...
0
|
|||||||
| 04.01.2010, 01:29 | |
|
Помогаю со студенческими работами здесь
14
Выделение памяти Выделение памяти Выделение памяти Выделение памяти До выделение памяти в С++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|