Обьясните как static влияет на оптимизацию. Если я правильно понимаю объект конструируется только один раз и это хорошо, но он же получается все время в памяти?
Конкретно задача — есть enum, надо написать функцию которая возвращает строку связанную со значением. Например так
(код недавно тут проскакивал, я скопировал)
char const* EnumToString(ReturnType rt)
{
static char* ReturnTypeString[] = {
"все хорошо",
"ошибка io с файлом",
"сессия закрыта",
"отсутствие соединения с удаленным модулем",
"ошибка КС принатого пакета"
};
STATIC_ASSERT(ERR_CRC == sizeof(ReturnTypeString) / sizeof(&ReturnTypeString[0]) - 1);
return ReturnTypeString[rt];
}
Если представить что программа работает долго, все время работы с компом. А вызов этой функции может быть только
1. 1 раз в начале работы — 3%
2. 1 раз в начале + еще пару раз — 1 %
3. вообще не быть — 96%
Если я правильно понимаю то в 3ем случае вообще не важно как обьявлен ReturnTypeString, а вот в первых двух что более правильно с точки зрения оптимизации static char* ReturnTypeString или просто char* ReturnTypeString ? Я правильно понимаю что если объявить как statiс он будет бестолку в памяти болтатся?
p.s. этот случай оптимизировать не пытаюсь, просто академический интерес
Добавил разметку — Кодт