定义全局数组的运行时成本?

时间:2014-07-20 12:03:33

标签: c++

我知道标准保证如果我这样做,例如:

int arr[N];

其中N是编译时常量,然后arr被初始化为零。 这需要花费O(N)时间进行初始化,还是依靠操作系统提供零页面?

1 个答案:

答案 0 :(得分:1)

不完全准确 - arr 在某些情况下初始化为0

int arr[42]; //namespace scope

int main()
{
   int arr2[42]; //function scope
}

arr将被初始化为0,arr2将不会。

arr1通常会嵌入到生成的文件(exe,obj,dll等)中,因此可能存在运行时成本,因为可执行文件可能会变大,因此需要更长时间才能加载到内存中程序加载时,但实际上是0。

由于arr2未初始化为某个值,因此讨论费用毫无意义。