我知道这是一个愚蠢的问题,但我希望有人可以在这里帮助我:
int size = 5;
int* newarray = new int[size];
此数组不起作用。它会有
newarray[1] = very big minus number;
而不是大小为5的数组。我做错了什么?
答案 0 :(得分:2)
这不是一个转储问题,如果它不是模糊的赢得了工作'声明。在描述问题时,您应该非常具体。
在您的特定情况下,数组'工作'。但是这个语句没有初始化数组的各个元素。这是设计的。如果您希望将它们初始化为0,则可以使用
int* newarray = new int[size]();
如果您希望将其初始化为其他任何内容,则必须编写代码以将每个成员初始化为所需的值。
答案 1 :(得分:0)
在C ++中,使用new
关键字动态初始化数组时,如:
1. int *array = new int[size]
2. int *array = new int[size]()
(1)在内存中为该特定类型和大小分配一部分内存,然后是默认初始化(可能是也可能不是零)。而(2)将所有内容初始化为0。 但是,由于内存分配具有传染性,您仍然可以访问提供的大小以外的元素,但会有一些垃圾值。当然不建议超出分配的大小,因为它可能会导致意外行为。 因此,无论何时看到负值,您都可能超出分配区域的范围。