繁体   English   中英

static memory 动态分配 memory 分配

[英]static memory allocation like dynamic memory allocation

代码:

int r, c;
cin >> r >> c;
int matrix[r][c];

我不明白运行时分配背后的想法。 目的是在运行时分配 memory 但在上面的代码部分中我们正在做同样的事情。

这部分代码运行时,运行时给定输入大小,根据行列大小分配矩阵memory,那么static或编译时分配如何?

本声明

int r, c;
cin >> r >> c;
int matrix[r][c];

是可变长度数组的声明。

该阵列具有自动存储期限。 当变量rc的值已知时,数组是在运行时创建的。

然而,可变长度 arrays 不是标准的 C++ 功能。

您可以使用标准容器 std::vector 而不是数组

std::vector<std::vector<int>> matrix( r, std::vector<int>( c ) );

在这种情况下,矩阵的所有元素都将被零初始化。

Static 但在运行时分配。

Static 分配是固定大小并且发生在快速但小的堆栈上:

int a = 0;

动态分配可以动态调整大小,但在堆上分配小的东西是不合适的:

int* a = new int(0);

只有动态 memory 可以传递到不同的范围,但您需要在完成后将其delete

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM