[英]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];
是可变长度数组的声明。
该阵列具有自动存储期限。 当变量r
和c
的值已知时,数组是在运行时创建的。
然而,可变长度 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.