【发布时间】:2018-04-11 20:11:51
【问题描述】:
当您创建这样的数组时(在堆栈上):
float array[5];
然后循环遍历元素
for (int i = 0; i < 5; i++) {
std::cout << array[i] << " ";
}
它给出了这个
1.4013e-45 0 0 0 5.88052e-39
这表明它还没有被初始化。 但是,当我这样做时(在堆上):
float* array = new float[5];
输出
0 0 0 0 0
如何在不初始化的情况下在堆上创建数组?
【问题讨论】:
-
这样的分配也不会初始化数组。
0和1.4013e-45一样是不确定的值。 -
有了这个:
float* array = new float[5];什么都没有初始化。但是,有了这个:float* array = new float[5]();现在是的,它们已被初始化。不要让一些零迷惑你:) -
纯运气都是0s
-
我用 2147483647 个值完成了它,但只得到了零。我的记忆是空的吗?
-
读取未初始化的变量是未定义的行为。这里的所有都是它的。该程序完全无效,您不能指望任何事情。
标签: c++ arrays heap-memory stack-memory