我知道"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;
Run Code Online (Sandbox Code Playgroud)
它运行没有任何错误,并显示正确的输出,所以什么时候应该使用"int*a = new int [5]"?或者它们在使用方面是否相同?我在codeblocks中使用gnu c ++编译器.
你想要五个整数.当然你应该使用
int *a=new int[5];
Run Code Online (Sandbox Code Playgroud)
由于您正在学习C++,因此了解未定义的行为是明智的.
你可能期望C++阻止你或警告你,如果你正在做一些你不应该做的事情,比如把它int当成一个int[5].
C++不是为追踪这些错误而设计的.如果你制作它们,C++只承诺它不会做出任何承诺.即使程序在上次运行时运行,下次也可能无法运行.