Предлагаю вниманию такой код
X++:
static void JobXXXX(Args _args)
{
DictTable dictTable;
HeapCheck hc = new HeapCheck();
;
info (strfmt("Кол-во объектов в памяти до создания %1", hc.countObjects(classnum(DictTable))));
dictTable = new DictTable(0);
if (dictTable == null)
info("Проверка на NULL вернула истину");
info (strfmt("Кол-во объектов в памяти после создания %1", hc.countObjects(classnum(DictTable))));
dictTable = null;
info (strfmt("Кол-во объектов в памяти после присвоения NULL %1", hc.countObjects(classnum(DictTable))));
}
Получается, что проверка на NULL для класса не дает ответа - создался он или нет.
В принципе , такая проверка безопасна, она не позволит обратиться к методам такого класса.Но, пока dictTable (в принципе, это касается всего семейства классов Dict*) находится в области видимости, объект остается в памяти.
По-моему, это ведет к потенциальным утечкам памяти
Такое поведение воспроизводится на ax 3.0 sp3, sp5 с KR2 и без него, ax 4.0 без sp