功能中有很多静态变量使用多达内存?

时间:2010-08-03 01:44:24

标签: c gcc static cross-platform

我想为一些特定于操作系统(Linux / MacOSX / Windows)的调用编写一个跨平台包装器来获取CPU的核心数等。我的想法是将所有这些包含在具有静态变量的单个函数中,所以诸如不改变的核心数量之类的东西只会被处理一次。

int getNumCPUCores()
{
    static int numCores = 0;

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

    return numCores;
}

现在我想知道这是不是一个坏主意,因为所有这些静态变量都会占用内存空间,无论它们是否已初始化。 还是我误解了什么?

2 个答案:

答案 0 :(得分:5)

int是少数几个字节(大多数现代平台上有四个或八个字节)。除非你有数百万个静态变量或某些非常庞大类型的静态变量,否则你不必担心它。

答案 1 :(得分:0)

不行,正如詹姆斯所说。

此外,为了避免使用互斥对象(如果您计划在多线程应用程序中使用它!),您最好有一个类的静态实例来评估核心数量施工时。