我在学校上了一节计算机科学课,我们的老师在谈论动态内存分配及其原因
cin>>size;
int array[size]; // According to him this should result in a compiler error
这不应该起作用,我们应该使用:
int *p, size;
cin>>size;
p = new int[size]
...
delete[] p;
我的问题是,如果您不能像那样动态声明数组,为什么第一个示例可以工作?
更新:所有测试均在 GNU GCC 编译器 中进行,上面的代码在 main 函数中
最佳答案
您正在使用支持可变长度数组的非标准编译器。你的教授是对的,int array[size]
不应该编译。
你的教授也错告诉你使用p = new int[size]
.他应该做的是告诉你使用 std::vector<int> p(size)
. (好的,出于教育目的,这是可以的):)
关于C++局部变量的动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019111/