我知道“int * a = new int”用于分配内存以包含int类型的单个元素。 “int * a = new int [5]”用于分配int类型的元素的块(数组)。但是当我运行此代码时
int *a=new int;
for(int i=0;i<4;i++)
a[i]=i;
for(int i=0;i<4;i++)
cout<<a[i]<<endl;
它运行没有任何错误,并显示正确的输出,所以什么时候应该使用“int * a = new int [5]”?或者它们在使用方面是否相同? 我在代码块中使用gnu c ++编译器。
答案 0 :(得分:5)
你需要五个整数。当然你应该使用
int *a=new int[5];
由于您正在学习C ++,因此了解Undefined Behavior是明智的。
如果您正在做一些您不应该做的事情,例如将int
视为int[5]
,您可能会期望C ++阻止您或警告您。
C ++并不是为追踪这些错误而设计的。如果你制作它们,C ++只承诺它不会做出任何承诺。即使程序在上次运行时运行,下次也可能无法运行。