реклама на сайте
подробности

 
 
> Оптимизация и сгенерированный конструктор
Непомнящий Евген...
сообщение Oct 13 2008, 05:34
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Натолкнулся на интересную штуку.

Вот такой код:
Код
struct Test
{
};

int main()
{
  Test(); //********

  return 1;
}


Помеченное компилится в:
Код
     94            Test();
   \   0000000A   E021               LDI     R18, 1
   \   0000000C   E030               LDI     R19, 0
   \   0000000E   018E               MOVW    R17:R16, R29:R28
   \   00000010   ........           CALL    __near_memzero


А если в Test запихнуть пустой конструктор
Код
struct Test
{
  Test() {}
};


то помеченная строка будет полностью выкинута.

Насколько я все это понимаю, автоматически сгенерированный конструктор очищает память (кстати - почему? У Страуструпа написано, что члены встроенных типов не инициализируются), причем оптимизатор почему-то спотыкается и все это не удаляет...


IAR C/C++ Compiler for AVR 4.30A/W32 (4.30.1.3), максимальная оптимизация по скорости (s9)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01341 секунд с 7
ELECTRONIX ©2004-2016