Век живи, век учись

А дело было так:
Я пишу на С++ и нередко пользуюсь виртуальными функциями, в данном проекте так же. Как устроена работа с виртуальными функциями можно прочитать
тут. Так вот, как выясняется (в доке на компайлер про это ни слова) __no_init, судя по всему, для объектов пользовательских классов исключает вызов конструктора. То есть для массивов или других глобальных объектов обычных типов он просто не помещает их в секцию инициализируемых данных, а для пользовательских классов не вызывает конструктор. Это догадка, как я сказал в доке ни слова.
Классы, объекты которого я сделал __no_init , содержат виртуальные методы. Конструктор для этих объектов не вызывается! А это значит, что таблица виртуальных методов не заполняется и адреса моих виртуальных функций туда не попадают. Далее линкер видит, что переопределенные мои виртуальные функции никем не используются (конструктора то нету, помещающие их адреса в таблицу) и благополучно их выкидывает! Вот и минус 1к кода (код функций). Я был сбит с пути тем, что объем высвобождаемой памяти примерно равен размеру буферов в объектах, которые я пометил __no_init - это просто совпадение.
Всем спасибо.