C++局部变量的动态内存分配

标签 c++ memory dynamic allocation

我在学校上了一节计算机科学课,我们的老师在谈论动态内存分配及其原因

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/

相关文章:

c++ - 错误 : Invalid initialization of non-const reference of type '.. &' from a temporary of type '...*const'

iOS AssetLibrary 存储指针

java - 动态绑定(bind)Java。对象是否具有其声明类型或实际类型的方法?

c++ - 可执行文件无法在双击执行时创建新文件

c++ - 简单的用户输入验证不起作用

c++ - 有没有一种惯用的方法可以在不存储变换或不必要地重新计算的情况下找到数组变换的最小值/最大值?

javascript - 验证具有未知 id 和公共(public)类的动态 HTML Select 的空值

sql-server - sql server中的解析树缓存对象类型是什么

linux - ptrace suid 进程(在它放弃特权之后)

清除具有单个存储元素的动态链接列表会使程序崩溃