Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Автоматическое управление памятью, Задолбало:) 
:(
    Опции темы
ManiaK
Дата 3.9.2004, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



Народ Сишный! Слышал я раньше, что в VC (а может и на уровне какой-то стандартной библиотеки) реализовано автоматическое управление памятью. Так вот недавно я с ним столкнулся вплотную - создал объект с помощью new, а потом в деструкторе одного класса(объект - член класса) хочу этот объект удалить с помощь delete. Фиг! Компилятор мне с усмешкой говорит, что объект уже, мол, давно не существует! Опоздал, простофиля! Надо сказать - переменная класса объявлена статически в глобальной области. Как мне сие умное творение отключить? Зачем - не спрашивайте, посмотрите на ник и всё понятно станет biggrin.gif
Буду благодарен любой идее...
PM MAIL WWW   Вверх
chipset
Дата 3.9.2004, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Как он это говорит? access violation?


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
ManiaK
Дата 3.9.2004, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



Типа того, счас точно не помню. Сам проект дома(я на работе).
PM MAIL WWW   Вверх
Vyacheslav
Дата 3.9.2004, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



См auto_ptr


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
chipset
Дата 3.9.2004, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Так я понял?
Код

static object *pObj;
class Foo
{

Foo() {pObj = new object();}
DoSomeWork() {/*...*/};
~Foo() {delete pObj;}//вот тут то тебя и ловят...
};



--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Олег М
Дата 3.9.2004, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата(ManiaK @ 3.9.2004, 18:47)
Слышал я раньше, что в VC (а может и на уровне какой-то стандартной библиотеки) реализовано автоматическое управление памятью.

Да? Это где ж ты такое слышал?

Цитата(ManiaK @ 3.9.2004, 18:47)
Так вот недавно я с ним столкнулся вплотную - создал объект с помощью new, а потом в деструкторе одного класса(объект - член класса) хочу этот объект удалить с помощь delete. Фиг! Компилятор мне с усмешкой говорит, что объект уже, мол, давно не существует! Опоздал, простофиля!

Дай лучше код позырить - вдруг и правда автоматическое управление памятью! А так, на словах, нифига не понятно.
PM MAIL ICQ   Вверх
ManiaK
Дата 3.9.2004, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



Нет, не так. Вот:
class X
{
X() { i = new int[..]; }
virtual ~X() { delete [] i; }// Вот тута бьютьsad.gif
int i;
};

X x;// А вот объект класса
PM MAIL WWW   Вверх
Олег М
Дата 3.9.2004, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Вот так попробуй
Код

class X
{
X() { i = new int[..]; }
virtual ~X() { delete [] i; }// Вот тута бьють
int *i;
};

PM MAIL ICQ   Вверх
chipset
Дата 3.9.2004, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата
Слышал я раньше, что в VC (а может и на уровне какой-то стандартной библиотеки) реализовано автоматическое управление памятью.

_gc?


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
ManiaK
Дата 3.9.2004, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



Я уже не мальчик по программерским меркам thumbs-up.gif
Это была просто опечатка. Именно так у меня и есть.
PM MAIL WWW   Вверх
Domestic Cat
Дата 3.9.2004, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 3
Всего: 172



Цитата(chipset @ 3.9.2004, 07:03)
_gc?


http://www.developer.com/net/cplus/article.php/3366991



--------------------

PM   Вверх
Олег М
Дата 3.9.2004, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата(ManiaK @ 3.9.2004, 19:04)
Это была просто опечатка. Именно так у меня и есть.

Точно не где больше не удаляешь? Проверь остальной код, ошибка где-то там, управления памятью в VC, насколько мне известно нет.
PM MAIL ICQ   Вверх
chipset
Дата 3.9.2004, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Domestic Cat
Именно это я им ел в виду smile.gif
2Маньяк
Может у тебя в деструкторе локальная i есть?
А попробуй просто delete i;


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
ManiaK
Дата 3.9.2004, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



Всё это я проверя уж раз двадца. Результат один - объект удаляется до меня. Именно по этому факту я и понял, что это либо глюк(мой или компилятора) либо автоматическое высвобождение...
PM MAIL WWW   Вверх
chipset
Дата 3.9.2004, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата
Именно по этому факту я и понял, что это либо глюк(мой или компилятора) либо автоматическое высвобождение...

Автоматического освобождени в чистом С++ AFAIK нема..
Значит это твой глюк


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0577 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.