我想为一些特定于操作系统(Linux / MacOSX / Windows)的调用编写一个跨平台包装器来获取CPU的核心数等。我的想法是将所有这些包含在具有静态变量的单个函数中,所以诸如不改变的核心数量之类的东西只会被处理一次。
int getNumCPUCores()
{
static int numCores = 0;
if(!numCores)
{
// The info is aquired here
}
return numCores;
}
现在我想知道这是不是一个坏主意,因为所有这些静态变量都会占用内存空间,无论它们是否已初始化。 还是我误解了什么?
答案 0 :(得分:5)
int
是少数几个字节(大多数现代平台上有四个或八个字节)。除非你有数百万个静态变量或某些非常庞大类型的静态变量,否则你不必担心它。
答案 1 :(得分:0)
不行,正如詹姆斯所说。
此外,为了避免使用互斥对象(如果您计划在多线程应用程序中使用它!),您最好有一个类的静态实例来评估核心数量施工时。