Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Не удаляется объект при закрытии формы (число прочтений - 705 )
zelenprog
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 03. Июня 2022
Пол: Мужской
Не удаляется объект при закрытии формы
11. Июня 2022 :: 16:22
Печать  
Здравствуйте!

Обнаружилась очень странная ошибка.

Сделал класс "Т_Фабрика", который будет создавать все нужные мне объекты.
Объект этого класса создается в глобальном модуле и храниится в переменной глобального модуля "глФабрика".
В этом классе есть вот такая простая функция:

Код (C++)
Выбрать все
Функция СоздатьОбъектТест () Экспорт
	лОбъект = СоздатьОбъект("Т_Тест");
	Возврат лОбъект;
КонецФункции
 



Класс "Т_Тест" очень простой. Для отладки в конструкторе и в деструкторе этого класса просто выдается сообщение.

В модуле формы документа объявлена переменная "мТест", и в тексте этого же модуля (внизу модуля ниже всех процедур) создаю объект этого класса с помощью моей "фабрики":

Код (C++)
Выбрать все
мТест = глФабрика.СоздатьОбъектТест(); 



После запуска 1С при открытии документа объект создается.
Но после закрытия документа этот объект не уничтожается, его деструктор не срабатывает.

Это какой-то баг?  Деструктор срабатывает только когда закрывается 1С.
Если это ошибка, то чья это ошибка? 1С или 1С++?

В ходе экспериментов выяснил, что если объект создавать "напрямую" в модуле формы вот так:

Код (C++)
Выбрать все
мТест = СоздатьОбъект("Т_Тест"); 



То при закрытии формы деструктор срабатывает!
Что за фигня?

  
Наверх
 
IP записан
 
zelenprog
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 03. Июня 2022
Пол: Мужской
Re: Не удаляется объект при закрытии формы
Ответ #1 - 11. Июня 2022 :: 16:26
Печать  
Сделал принудительное обнуление ссылки на объект в процедуре "ПослеЗакрытия" модуля формы документа:

Код (C++)
Выбрать все
Процедура ПослеЗакрытия()
	мТест = 0;
КонецПроцедуры
 



Однако, объект все равно не освобождается из памяти!
Деструктор не срабатывает. В чем может быть причина?
  
Наверх
 
IP записан
 
zelenprog
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 03. Июня 2022
Пол: Мужской
Re: Не удаляется объект при закрытии формы
Ответ #2 - 11. Июня 2022 :: 17:26
Печать  
Могут ли на это флиять флаги 1С++?

EnableHookEventsGroupContext: 0
EnableCheckType: 0
EnableDebugging: 0
EnableOptimization: 1
EnableTableSourceTable: 1
EnableTurboBL: 1

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

Я проверил - флаги не влияют.
« Последняя редакция: 12. Июня 2022 :: 04:43 - zelenprog »  
Наверх
 
IP записан
 
zelenprog
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 03. Июня 2022
Пол: Мужской
Re: Не удаляется объект при закрытии формы
Ответ #3 - 15. Июня 2022 :: 08:56
Печать  
Оказывается,это известная ошибка.

Вот тема с подробным разбором полетов:
https://www.1cpp.ru/forum/YaBB.pl?num=1247569443
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать