Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема как удалять объекты в режиме отладки (число прочтений - 4405 )
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
как удалять объекты в режиме отладки
18. Июля 2006 :: 11:35
Печать  
Решил все-таки новую тему начать....
В 1с++ в режиме отладки объекты как-то неправильно удаляются из памяти. Этого как-то можно избежать?
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: как удалять объекты в режиме отладки
Ответ #1 - 18. Июля 2006 :: 13:27
Печать  
У тебя утечка идет? Как ты определил?

Объект может уничтожаться чуть позже...
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: как удалять объекты в режиме отладки
Ответ #2 - 19. Июля 2006 :: 05:28
Печать  
Где примеры и точное описание проблемы?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: как удалять объекты в режиме отладки
Ответ #3 - 19. Июля 2006 :: 11:57
Печать  
Да элементарный пример:

[code]
Процедура ПриНачалеРаботыСистемы ()
     Если ЗагрузитьВнешнююКомпоненту("1cpp.dll") <> 1 Тогда
           Предупреждение("Не найдена дополнительная компонента программы");
           СтатусВозврата(0);
           Возврат;
     КонецЕсли;
     г_Лог = СоздатьОбъект("Т_Протокол");
     г_Лог.Открыть("worklog");      
     г_Лог.Записать("============= Начало программы ==============");
     г_Объект1 = СоздатьОбъект("Т_Объект1");
     г_Объект2 = СоздатьОбъект("Т_Объект2");
КонецПроцедуры


Процедура ПриЗавершенииРаботыСистемы()
     г_Объект1 = 0;
     г_Объект2 = 0;
     г_Лог.Записать("============= Конец программы ==============");
               г_Лог = 0;
КонецПроцедуры

[/code]

Класс "Т_Лог" просто записывает строку в файл.
Классы "Т_Объект1" и "Т_Объект2" просто в конструкторе и деструкторе вызывают команду:

[code]
г_Лог.Записать("....");
[/code]

Так вот в режиме без отладки в файле есть сообщения от конструкторов и деструкторов как и должно быть. А в режиме с отладкой в файле строка " ...  конец программы ... " есть, а деструкторов нету!!
  
Наверх
ICQ  
IP записан
 
Deb
1c++ developer
Отсутствует


Sex, drugs and 1C

Сообщений: 41
Зарегистрирован: 21. Мая 2006
Re: как удалять объекты в режиме отладки
Ответ #4 - 20. Июля 2006 :: 09:44
Печать  
Окна форм отладочных классов закрываешь вручную перед закрытием программы?
  
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: как удалять объекты в режиме отладки
Ответ #5 - 01. Августа 2006 :: 04:17
Печать  
Извиняюсь за долгое отсутсвие...
Нет, окна я не закрываю. Объектов много, и в режиме отладки создается около 20 окон.
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: как удалять объекты в режиме отладки
Ответ #6 - 07. Августа 2006 :: 08:14
Печать  
Окончательный ответ все-таки и не прозвучал на мой вопрос...
Даже если я начинаю закрывать окна вручную, то при закрытии n-го окна (не последнего) 1С-ка вылетает. И мне кажется это нормально, т.к. я закрываю окна не в той последовательности, в которой создавались объекты в программе.
И все-таки как же правильно работать в режиме отладки???
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать