Fortran Coder

查看: 8047|回复: 1
打印 上一主题 下一主题

[讨论] 在普通的计算中,还有必要用动态数组来节省内存吗

[复制链接]

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

楼主
发表于 2014-11-13 19:25:02 | 显示全部楼层
从执行的角度来说:
1.动态数组与静态数组基本没有区别,除了存储位置可能不同。(后者通常在静态data区,前者通常在Heap里)
2.数组的边界不影响程序使用。甚至,动态数组因为分配时需要向操作系统申请,反而会稍慢一些。

从其他的角度来说,动态数组有这些好处:
1.省内存,这是你所说的。在内存足够的情况下,为什么要省内存?原因在于,计算机不是只执行你一个程序(现在的操作系统都是多任务的了吧?),另外,你当前的程序可能足够,但如果将来会扩展程序呢?或者把多个程序组合在一起呢?内存就不一定能满足你的要求了。
2.动态数组不占用堆栈。堆栈是一块特殊的内存,在某些编译器上会被静态局部数组使用。造成堆栈溢出(Stack overflow),而动态数组不会。
3.可回收。如果程序中多个模块都需要大数组,但它们并不会同时执行,那么就可通过回收动态数组来最大化使用内存(函数中的局部动态数组在返回时会自动回收!)。反之,静态数组如果定义多个,都需要很大,则每一个可使用的资源就少了。
4.使代码易于阅读,易于扩展。适合于良好习惯的养成。.
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-5 23:25

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表