在大小为变量的情况下,我应该在哪些情况下使用关键字 new 来分配数组?我正在阅读此代码:https://github.com/Hawstein/cracking-the-coding-interview/blob/master/1.7.cpp
在函数零()中,为什么 row [m] 和 col [n] 声明不会导致错误? m 和 n 是函数变量。
谢谢
答案 0 :(得分:2)
VLA - 可变长度数组是C ++语言的非标准扩展,因此您的代码只能编译with a compiler extension
当你事先不知道数组的大小并且你不希望/不能浪费宝贵的堆栈内存分配一个临时的时候,你应该在每种情况下使用动态分配的内存,如果适用的话,甚至更好你,使用std::vector
(一个向量使用堆内存,无论如何它的元素)
编辑:另一个重要的建议是看看smart pointers,这通常比原始指针提供额外的优势
答案 1 :(得分:0)
从不。
现代c ++编译器可以处理数组大小的变量。他们只使用m
和n
中当前的值。无需使用new
。