В операторе
std::cout << "TEST: " << a << endl
Вы инициализируете объект ostream
, который включает в себя хранилище.Вы также используете std::endl
, что не то же самое, что \n
.Когда вы удаляете это заявление, все эти затраты не связаны.
Оператор перед последним cout
также оптимизируется (удаляется) компилятором, поскольку значение a
нигде не используется.
int a = bitmap[1];
Более того, обаЦиклы for
оптимизируются компилятором, поскольку значения bitmap
, рассчитанные обоими циклами for
, НЕ будут использоваться при удалении последнего оператора cout
.И нет необходимости в массиве bitmap
.
Вы можете увидеть сборку, сгенерированную для вашего кода с версией компилятора и опциями, которые вы указали здесь .И вы можете ясно видеть, что происходит, когда вы закомментируете и раскомментируете оператор cout
.