![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| S.A.P. |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: нет Всего: 71 |
Любитель
Тут удалять ничего не надо
метод Close() у тебя должен вызываться и для CInternetSession. |
||||||
|
|||||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 1 Всего: 92 |
И почему это не надо. Вот Close - сам вызовется (при удалении), а память, выделенную на объект освободить? |
|||
|
||||
| Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 1 Всего: 134 |
Ссылки тоже рулят. Кстати, а мне непонятен смысл проверки на NULL:
Delete плюсов, ровно как и free Си, не должен делать что-либо, если переданный указатель NULL. Смотрите:
Неужели это делается только для того, чтобы не вызывать операторы delete? -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Так, забыли мои фугкции Это я к примеру, и так вопрос-УДАЛЯТЬ или НЕ удалять все указатели...
Если !=NULL? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 1 Всего: 134 |
Coocky
Читать документацию. Если сказано удалять - удаляй. Если нет - то даже не пытайся. Некоторый ф-ции(например, в ANSI C readdir) возвращают указатели на статические переменные. Если попробуешь удалить, то будет ой. А с NULLом при удалении ИМХО сравнивать не стоит. Разве ты часто operator delete перегружаешь? -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Ну ты сказал! Как будто указатели, кроме хипа, никуда больше не могут указывать. Наоборот, никогда не надо освобождать указатель, не тобою выделенный, за исключением случаев, когда в описании процедуры прямо сказано, что за освобождение памяти отвечает вызывающий код. Что касается CWnd::GetDlgItem - точно не надо ничего освобождать. Эта функция может вернуть как указатель на временный динамический объект, так и на где-то лежащую переменную. В первом случае MFC сам почистит память, во-втором - понятно, что удалять ни в коем случае нельзя. Упс! Не заметила большого продолжения. Вобщем, Mayk, все то же самое уже сказал. Это сообщение отредактировал(а) Earnest - 19.7.2005, 18:00 -------------------- ... |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: нет Всего: 172 |
А какой смысл возвращать указатель на стек? -------------------- |
|||
|
||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 1 Всего: 134 |
Хотя бы для удобства. Допустим нам быстро надо скопировать две строки в третью. При возвращении указателей это делается в одну строчку.
Очень удобно. (после небольшой тренировки этот код вызывает не больше проблем чтения, чем while(*i++=*j++)). Кроме того, указатель может указывать так же и на статические переменные. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Функция может возвращать указатель на статическую/глобальную переменную - напр., AfxGetMainWnd(). Функция-член класса может возвращать указатель на что-нибудь внутри объекта... Да мало ли... -------------------- ... |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 1 Всего: 134 |
Еще вспомнил такую функция, как alloca() - выделение памяти в стеке. Правда она не очень распространена, но всё же. При выходе из функции память автоматически освобождается. Этакий auto_ptr со времён си. Разумеется, удалить выделенный таким образом объект практически невозможно иначе как выйти из функции.
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |