【发布时间】:2021-04-01 02:45:36
【问题描述】:
在运行时使用“new”关键字进行动态内存分配和使用以下方法之间声明数组的大小和使用以下方法之间哪个更节省内存以及为什么:
#include <iostream>
using namespace std;
int main ()
{
int size;
cin >> size;
int a[size];
}
使用“新”关键字进行动态内存分配
#include <iostream>
using namespace std;
int main ()
{
int *array {nullptr};
int size;
cin >> size;
array = new int[size];
delete [] array;
}
【问题讨论】:
-
int a[size];不是有效的 C++(使用 VLA 扩展)。 -
为什么 ```int a[size]`` 无效并且编译没有错误?
-
int a[size];无法在 MSVC 上编译:godbolt.org/z/xo13cW - 如前所述,它不是标准 C++,它使用一些编译器支持的扩展 -
这能回答你的问题吗? c++ dynamic memory allocation using "new"
-
第二个 sn-p 有内存泄漏。更喜欢
std::vector而不是原始拥有指针。
标签: c++ pointers memory-management dynamic-memory-allocation member-function-pointers