【问题标题】:Dynamic memory allocation - default-initialization of primitive types in c++动态内存分配 - C++ 中原始类型的默认初始化
【发布时间】:2011-05-30 12:03:19
【问题描述】:

如果我分配一些原始类型的数组,例如

double *v = new double[10];

我需要知道,数组条目的初始值是多少。

它是在标准还是编译器依赖中指定的,我在哪里可以找到它。

谢谢, 约翰内斯

【问题讨论】:

    标签: c++ initialization memory-management


    【解决方案1】:

    不,数组内容未初始化。您需要使用double *v = new double[10](); 为每个元素设置默认值0(注意())。

    【讨论】:

    • 这完全不明显,很可能在代码审查中被忽视...:/
    • @Matthieu:非常正确。甚至 Naveen 都怀疑这一点,所以他写了Notice ()。哈哈
    • OTOH,让人眼检查工具更好地检测到的错误并不是代码审查应该做的事情。
    • @Nawaz ,有没有关于() 的参考资料?
    • @compile-fan:关于语法T(),§8.5/7 说An object whose initializer is an empty set of parentheses, i.e., (), shall be value-initialized.,§8.5/5 说— if T is an array type, then each element is value-initialized;double 类型元素的值初始化意味着零初始化。
    猜你喜欢
    • 2015-11-08
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 2012-09-15
    相关资源
    最近更新 更多