Много ли статических переменных в функциях использует много памяти? - PullRequest
1 голос
/ 03 августа 2010

Я хочу написать кроссплатформенную оболочку для некоторых вызовов ОС (Linux / MacOSX / Windows), чтобы получить количество ядер ЦП и т. Д. Моя идея состояла в том, чтобы поместить их все в отдельные функции со статическими переменными,поэтому такие вещи, как количество ядер, которые не меняются, будут обрабатываться только один раз.

int getNumCPUCores()
{
    static int numCores = 0;

    if(!numCores)
    {
        // The info is aquired here
    }        

    return numCores;
}

Теперь мне интересно, может ли это быть плохой идеей, поскольку все эти статические переменные занимают место в памяти независимо от того, инициализируются ли ониили нет.Или я что-то не так понял?

Ответы [ 2 ]

5 голосов
/ 03 августа 2010

int - это горстка байтов (четыре или восемь на большинстве современных платформ).Если у вас нет миллионов статических или статических переменных какого-то действительно огромного типа, вам не нужно об этом беспокоиться.

0 голосов
/ 03 августа 2010

Нет, все нормально, как сказал Джеймс.

Кроме того, чтобы избежать необходимости использовать объект взаимного исключения (если вы планируете использовать его в многопоточном приложении!), Вам лучше иметь статический экземпляр класса, который будет оценивать количество ядер. на строительстве.

...