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

Run time cost of defining a global array?

本文关键字:运行时 全局 数组 定义      更新时间:2023-10-16

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

int arr[N];

其中N为编译时间常数,则arr初始化为零。这是否花费O(N)的时间来初始化,或者它是否依赖于操作系统提供一个零页?

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

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

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

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

由于arr2没有初始化为某个值,所以没有必要讨论成本