我知道标准保证如果我这样做,例如:
int arr[N];
其中N
是编译时常量,然后arr
被初始化为零。
这需要花费O(N)
时间进行初始化,还是依靠操作系统提供零页面?
答案 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
未初始化为某个值,因此讨论费用毫无意义。