【发布时间】:2019-07-19 04:41:06
【问题描述】:
如果我有以下两个陈述:
// OK
const int ARRAYSIZE = 5;
int x[ARRAYSIZE];
// NOT OK
int ARRAYSIZEBAD = 5;
int y[ARRAYSIZEBAD];
而且我没有使用 -pedantic-errors 标志进行编译...为什么第二个示例是一件坏事?在什么情况下最好对 new 运算符使用动态分配?
【问题讨论】:
-
这本身还不错,只是语言没有提供的功能。事物的大小必须在编译时知道,这意味着您需要在编译时知道数组大小的值。
-
" 在什么情况下最好使用 new 运算符的动态分配?"这可能是一个完全不同的问题。相关但与您的其他问题不同
-
除了NathanOliver所说的,如果你想像第二个例子那样动态创建一个数组,你可以使用
int* y = new int[ARRAYSIZEBAD]; -
@user463035818 是的,这是对那个问题的欺骗......
-
@JoeBass“因为编译器这么说”不是很好的答案。更好的答案是“因为语言这么说”。
标签: c++ heap-memory stack-memory