首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态内存分配与动态内存分配

静态内存分配与动态内存分配
EN

Stack Overflow用户
提问于 2022-03-13 19:34:59
回答 2查看 288关注 0票数 0

代码:

代码语言:javascript
复制
int r, c;
cin >> r >> c;
int matrix[r][c];

我不明白运行时分配背后的想法。目的是在运行时分配内存,但在上面的代码部分,我们也是这样做的。

当代码的这一部分运行时,输入的大小是在运行时给出的,矩阵是根据行和列的大小分配内存的,那么它是如何静态的或编译时分配的呢?

EN

回答 2

Stack Overflow用户

发布于 2022-03-13 19:37:37

本声明

代码语言:javascript
复制
int r, c;
cin >> r >> c;
int matrix[r][c];

变量长度数组的声明。

此数组具有自动存储持续时间。并在运行时创建数组,当变量rc的值已知时。

但是,可变长度数组不是标准的C++特性。

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

代码语言:javascript
复制
std::vector<std::vector<int>> matrix( r, std::vector<int>( c ) );

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

票数 3
EN

Stack Overflow用户

发布于 2022-03-13 19:41:04

静态,但在运行时分配。

静态分配是固定大小的,出现在快速但很小的堆栈上:

代码语言:javascript
复制
int a = 0;

动态分配可以是动态大小的,但是在堆上分配小东西是不符合性能的:

代码语言:javascript
复制
int* a = new int(0);

只有动态内存可以传递给不同的作用域,但是当您完成时需要对其进行delete

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71460192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档