Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2012, 23:46   #21
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

то есть тип три, ну тогда ладно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.08.2012, 00:37   #22
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

еще вопрос об освобождении памяти
если программа аварийно закрылась, освободится-ли память?
Код:
int *a = new int; // выделяем память
int *ptr; 
*ptr = 1; //  тут виновс будет ругаться и напишет программа будет закрыта
delete a; //  освободится-ли память
SAMOUCHKA вне форума Ответить с цитированием
Старый 12.08.2012, 00:39   #23
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ваше адресное пространство умрет вместе с вашим процессом, как и вся память им используемая.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.12.2012, 00:36   #24
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

если я буду создавать объекты, только динамически и не удалять их, явно через dlete, а в деструктре
delete this; - будет утечка памяти

вот код для большей ясности, моего вопроса
Код:
#include <iostream>

using namespace std;

class test
{
    int v;
    public:
        test(){v = 0;}
        test(int _v){v = _v;}
        ~test(){delete this;}
        void show(){cout<<v<<endl;}
};

int main()
{
    test *t1 = new test(5);
    t1->show();
    return 0;
}
SAMOUCHKA вне форума Ответить с цитированием
Старый 14.12.2012, 00:42   #25
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

будет утечка, деструктор то кто вызовет?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.12.2012, 01:06   #26
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Код:
~test(){delete this;}
эта запись не нужна...
когда деструктор не описан он генерируется точно таким же кодом.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 14.12.2012, 01:11   #27
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Perchik71 Посмотреть сообщение
Код:
~test(){delete this;}
эта запись не нужна...
когда деструктор не описан он генерируется точно таким же кодом.
вообще то деструктор не освобождает память за самим обьектом.
это делает или delete или автоматически если обьект на стеке.
(кстати в последнем случае данный должен упасть)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.12.2012, 01:22   #28
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вообще то деструктор не освобождает память за самим обьектом.
это делает или delete или автоматически если обьект на стеке.
(кстати в последнем случае данный должен упасть)
ну по идеи this как бы должен существовать до завершения скобки,
иначе будет fail. но чисто наглядно процесс как с майн.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 14.12.2012, 01:27   #29
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

существования this не значит что память освобождаемая.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.12.2012, 01:30   #30
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
существования this не значит что память освобождаемая.
ты не понял, я в том смысле что это как return 0; деструктор чистит лишь, то, что на калякал конструктор. но как бы мнимо происходит и уничтожение this, но только уже delete или, стеком.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Безопасность e_e_n Безопасность, Шифрование 40 03.09.2010 01:11
Безопасность x_AN777 Помощь студентам 2 08.05.2010 23:30
Безопасность xap4o PHP 4 15.02.2010 00:02