我必须为我的班级做一个作业,它说不要使用静态数组,只使用动态数组。我在书上和网上都看过,但我似乎不明白。
我认为 Static 是在 编译时 创建的,而 Dynamic 是在 运行时 创建的,但我可能将其误认为是内存分配。
你能解释一下C++中静态数组和动态数组的区别吗?
原文由 user69514 发布,翻译遵循 CC BY-SA 4.0 许可协议
我必须为我的班级做一个作业,它说不要使用静态数组,只使用动态数组。我在书上和网上都看过,但我似乎不明白。
我认为 Static 是在 编译时 创建的,而 Dynamic 是在 运行时 创建的,但我可能将其误认为是内存分配。
你能解释一下C++中静态数组和动态数组的区别吗?
原文由 user69514 发布,翻译遵循 CC BY-SA 4.0 许可协议
让我们用一个函数来说明这个问题
如果我们有静态数组,那么调用 function() 将从内存中迭代所有固定分配的组件。不会有追加。
另一方面,如果我们追加动态数组,它将扩展内存。
原文由 Muhammad Aqeel 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
静态数组是在 堆栈 上创建的,并且具有自动存储持续时间:您不需要手动管理内存,但是当它们所在的函数结束时它们会被销毁。它们在 编译时 必须具有固定的大小:
使用
operator new[]
创建的数组具有动态存储持续时间并存储在 _堆上_(技术上是“免费存储”)。它们在 运行时 可以有任何大小,但您需要自己分配和释放它们,因为它们不是堆栈帧的一部分: