可能重复:
C/C++:运行时数组大小允许不动态分配吗?
我在一个类中,我们有一个简单的作业来编写一个返回指向动态数组的指针的函数,并提供一个存根来测试它。我已经完成了这项工作,所以我不会在作业上寻求帮助。在班级博客上,另一名学生表示,直观地说,人们应该能够做到
int Array[size];
,其中 size
显然是用户定义的变量。
但显然它无法在某些人的 VS 编译器上运行。一个可以 只是假设,因为共同点是 VS (是的,我 通过询问朋友在他的盒子上检查确认了这一点),VS 是 问题。几个之一。
已经很混乱了,因为
I know that...
部分是指我告诉他们不应该有任何理由
#include <new>
才能使用 new
,但似乎他们认为我们同意不应该有任何理由使用 new
分配动态数组的原因。(?)
所以问题是显而易见的。是否有任何编译器可以接受 int Array[size];
const int
而不会出现错误? 其中
size
不是常量表达式,是一个
变长数组。 自 1999 年 ISO 标准起,它们是 C 的标准功能。 C++ 标准尚未采用它们,但一些编译器支持它们作为语言扩展。 (任何 C++ 编译器在一致模式下调用时,必须至少对具有非常量大小的数组类型发出诊断。)
顺便说一句,这与您使用的 IDE 没有直接关系;它由 IDE 调用的编译器控制。
至于
#include <new>
有一个同名的标准头,但对于语言中内置的
new
运算符来说不是必需的。 <new>
标头提供了 operator new
的多个重载版本以及一些其他声明。