Тема: Размещение объектов базы данных в памяти

При открытии AcDbDatabase ВСЕ объекты (как я понимаю и как оно выглядит в дебаге) заводятся в оперативной памяти, заполняются Filler-ом и лежат там до закрытия своей базы. (За исключением goodbye(), когда деструктор объекта зовется сразу) Ну и исключая механизм lazy-loading, когда объекты создаются по мере необходимости, но умирают все равно по закрытию базы.

Вопрос:
В хелпе написано, что доступаться после закрытия объекта close() по его указателю нельзя. Вобще понятно если от указателя позвать функцию после закрытия объекта, то на assertRead или Write бросится exception.

Однако, есть в классе структура большого размера и копировать ее по get и set функциям не желательно. ЗНАЕТ ЛИ КТО, что мешает получить указатель на эту структуру в методе get, закрыть объект, далее в процессе работы заполнить структуру, открыть объект, сказать set, где будет только assertWrite и закрыть объект?

P.S. Написал тест того что описал и он работает зашибись, но не подложена ли где свинья? Ведь работаю с памятью закрытого объекта.

Re: Размещение объектов базы данных в памяти

Интересный малоизвестный факт AcDbObjectId на самом деле простой указатель
В руководстве прямо об этом не говорится, но я думаю что это указатель на элемент в контейнере описалелей объектов
Сделано это по моему мнению что бы отвязать имя от положения объекта в памяти. Следовательно тебе никто ничего не должен
Сегодня автокад может оставить положение объекта впамяти постоянным завтра нет
Несмотря на то что сегодня это работает это IMHO может оказаться источником трудно различимых глюков завтра

Re: Размещение объектов базы данных в памяти

OK. Тут я соглашусь, что положение объекта в памяти седня может быть одним способом реализовано - завтра другим.

Однако...
Опять же есть проблемма с модификацией больших структур данных (относительно больших, допустим структура 30 полей, но ее постоянно модифицируют так, что временные расходы становятся ощутимыми, а скажем что АвтоКад далеко не из самых первых в смысле быстродействия )

Ну дак вот передавать, а следовательно копировать"большую" структуру в методах set и get есть не очень хорошо на мой взгляд... не согласные могут аргументировать это тут.
 
Так что же делать?