c++ - C++中的静态和动态数组有什么区别?

标签 c++ arrays dynamic-memory-allocation static-memory-allocation

我必须为我的类(class)做一个作业,它说不要使用静态数组,只使用动态数组。我在书上和网上都看过,但我似乎不明白。

我认为静态是在编译时创建的,而动态是在运行时创建的,但我可能将其误认为是内存分配。

你能解释一下C++中静态数组和动态数组的区别吗?

最佳答案

静态数组是在堆栈上创建的,并且具有自动存储期限:您不需要手动管理内存,但是当它们所在的函数结束时它们会被销毁。它们在编译时必须具有固定的大小:

int foo[10];

使用 operator new[] 创建的数组具有动态存储持续时间并存储在 heap 上(技术上是“免费存储”)。它们在运行时期间可以有任何大小,但您需要自己分配和释放它们,因为它们不是堆栈帧的一部分:

int* foo = new int[10];
delete[] foo;

关于c++ - C++中的静态和动态数组有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2672085/

相关文章:

javascript - 过滤带下划线的对象数组并获取新的值数组

c - 尝试在 C 中取消引用/使用双指针

c - 尝试从文件中读取下一行/字符时出现段错误

c++ - 防止数组从 *[N] 衰减到 **

抽象类中的 C++ 运算符重载

C++ 在 int 变量中存储 double 错误

c - 如何在c中使用不同变量类型的内存分配?

c++ - 使用 scons,如何链接到预建库?

python - 对 4D numpy 数组进行排序,但保持一个轴连接在一起

php - 如何在 PHP 中重新索引数组的值?