初始化数组,可能无法预料的后果?

问题描述 投票:1回答:1

我最近观察到,通过初始化数组,垃圾值全部被空终结符替换。这似乎是无关紧要的,但在一个大型程序中,我认为将资源用于清理阵列是不可取的。现在要清楚,我不编写大型程序,这就是我要问的原因,我只是一个初学者。但是,如果使用得当,只要始终有明确放置的终结符,就可以完全判断垃圾值是完全正常的。

那么,我应该把它作为圣经来总是初始化我的数组,或者我应该考虑是否可以让垃圾值保持不变?

arrays string c++11 cin
1个回答
1
投票

这是因为它是C ++ spec1,§11.6.2的一部分,它讨论了使用字符串文字初始化字符(或宽字符)数组的行为:

如果初始化器的数量少于数组元素,则未明确初始化的每个元素都应进行零初始化(11.6)。

无论如何,关于计算成本:

在全局(非函数范围)中初始化数组时,它通常位于可执行文件的.data段中,并通过直接从可执行映像复制内存页来初始化,而不是在执行期间一次戳内存字节的指令。初始化。页面是在程序加载时复制的,或者是demand-paged,再次以页面级粒度复制。

在这种情况下,由于必须初始化整个存储,因此使用零来专门初始化它不需要额外的成本。

1我找不到官方规格的好的非付费副本。此引用来自draft,第228页(每页脚)或第242页(按PDF分页)。

© www.soinside.com 2019 - 2024. All rights reserved.