mikhail_g писал(а):Спрашиваю потому, что мне необходимо знать, будет ли размер памяти, выделенный под массив, уменьшен до величины равной сумме размеров записанных переменных.
Нет. X байт на SAFEARRAY и по 16 байтов на каждый Variant-ный элемент массива. Плюс дальнейшие накладные расходы, если элементом массива является строка, другой массив или UDT.
Если бы массив Variant-ов гипотетический умел ужиматься до размеров своих элементов, было бы адской задачей вычислить адрес N-ного элемента.
mikhail_g писал(а):Т.е. будет ли он работать как стэк?
Стек это нечто, что допускает по отношению к себе операции push и pop, работающие по принципу LIFO. В этом плане массив может работать как стек. В каком-то другом плане, который наверняка подразумевался — вряд ли.
mikhail_g писал(а):Variant переменная занимает 16 байт, если ей присвоить integer, будет ли размер уменьшен до 2?
Если подумать головой, то окажется, что это в принципе невозможно, потому что если кроме двух байтов, хранящих значение Integer, ничего больше нет, то непонятно, как информация о том, что это вообще Integer, а не что-нибудь другое, может занимать оставшиеся 0 битов.