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