Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Visual C++
Перезагрузить страницу Освобождение памяти malloc и free
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Rem Rem вне форума
Member
 
Сообщений: 106
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.01.2004
По умолчанию Освобождение памяти malloc и free - 01.07.2004, 14:59

Подскажите если я сначала выделю место с помощью malloc, а затем просто поинтер туду приравняю к NULL освободиться память или надо объязательно использовать free. Заранее благодарен.
Ответить с цитированием
  (#2 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 01.07.2004, 15:13

Присвоение указателю значения NULL не приводит автоматически к освобождению памяти. После malloc() обязательно надо использовать free().
Ответить с цитированием
  (#3 (permalink)) Старый
Tremr Tremr вне форума
Новичок
 
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.06.2004
По умолчанию 01.07.2004, 19:48

А лучше использовать new и delete.
Ответить с цитированием
  (#4 (permalink)) Старый
zoon zoon вне форума
Member
 
Сообщений: 163
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.07.2003
По умолчанию 01.10.2004, 10:21

Цитата:
Originally posted by Tremr
[b]А лучше использовать new и delete.
а чем же это лучше то?
Ответить с цитированием
  (#5 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 01.10.2004, 11:17

Тем, что по new - его деструктор.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
zoon zoon вне форума
Member
 
Сообщений: 163
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.07.2003
По умолчанию 01.10.2004, 12:08

ну а если вызов конструктора и деструктора объекта не нужен???
Ответить с цитированием
  (#7 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 01.10.2004, 13:42

Это хорошо только в случае тривиальных POD-объектов.... а в таком случае вызов new ничем не отличается от malloc, а delete - от free, соответственно. Для нетривиальных объектов необходимо "правильное" конструирование. Компилятор сам соптимизирует код - это можно посмотреть в дизассемблере.
Ответить с цитированием
  (#8 (permalink)) Старый
nop nop вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.03.2004
По умолчанию 01.10.2004, 13:45

Цитата:
Originally posted by Влад
[b]Это хорошо только в случае тривиальных POD-объектов....
А можно пример НЕтривиального POD-объекта ?
Ответить с цитированием
  (#9 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 01.10.2004, 13:55

А POD-объекты всегда тривиальны.... Нетривиальные же объекты, для которых необходимы правильные конструкторы и деструкторы - не являются POD...
Ответить с цитированием
  (#10 (permalink)) Старый
zoon zoon вне форума
Member
 
Сообщений: 163
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.07.2003
По умолчанию 01.10.2004, 13:57

Цитата:
Originally posted by nop+-->
Цитата:
<!--QuoteBegin-Влад
Цитата:
[b]Это хорошо только в случае тривиальных POD-объектов....
А можно пример НЕтривиального POD-объекта ?
присоединяюсь...
Ответить с цитированием
  (#11 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 04.10.2004, 17:51

Цитата:
Originally posted by zoon+-->
Цитата:
<!--QuoteBegin-Tremr
Цитата:
[b]А лучше использовать new и delete.
а чем же это лучше то?
Ну наверняка же удобнее пользоваться одной парой операторов для всех случаев. new и delete как раз и хороши для всех случаев. Если выделяем память под класс, то будет работа с конструкторами класса. Если память выделяется просто как память, то работа new и delete идентична работе malloc и free.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Освобождение оперативной памяти Фаринг Любые вопросы от новичков 13 12.11.2011 12:02
Освобождение памяти по указателю с помощью delete imported_Muffin С/С++ 1 20.09.2011 10:15
Выделение-освобождение памяти BabyBear Visual C++ 5 13.05.2011 14:12
Динамический массив типа char или string malloc Джеки Вопросы начинающих программистов 1 08.03.2011 16:37
Освобождение памяти можно ли сделать программно Henrih .NET 2 24.11.2007 13:17
Освобождение памяти с чего начать D_K С/С++ 36 04.05.2007 02:47
Как реализовать malloc и free kvaga С/С++ 3 01.11.2005 01:16
Массив указателей и освобождение памяти Stan C++ Builder 27 07.02.2005 12:51
Освобождение памяти утечка памяти, память не освобождается SomewhereSomehow C++ Builder 3 23.12.2004 02:29
realloc и malloc Unhandled Exception почему не работает Rem Visual C++ 2 14.06.2004 13:58
Освобождение памяти в Builder Dr.Bob C++ Builder 1 26.04.2004 16:06
malloc, free. Как ими пользоваться Anonymous С/С++ 2 19.08.2002 22:55



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов