请教理论,为什么需要“动态”分配内存空间?

变量直接申明就可以使用,数组也是,
那么“动态”分配内存空间的作用是什么呢?

我举例子和你说下吧:
我也刚刚学C++,对其理解也不是很深刻,希望对你有用。
节省资源:
比如说,当一个程序,它可以处理很多东西,
1, 可以处理一个五万人的学校的所有学生的资料。
2, 可以处理一个几十人的小班级。

1)如果你用静态的分配,比如说,数组。当你知道要处理这些问题的时候,你需要定义一个50000 长度的数组才能解决问题。
这时候,当你用这个程序去处理班级资料。这里分配的大量的内存地址都会造成了浪费。
2)你要处理50000人以上的学校的资料,又会出现分配不足的问题。需要重新修改代码。(这就是很麻烦的事情了)
这个在C++上叫溢出。
3)使用动态分配内存的好处。
动态的话,就是你使用多少,就用多少。
根据你输入的数据大小来分配内存。
比如说,这个程序处理50人的小班级,则会分配50个空间。
当增加一个人的时候,则程序就能自动在后面再加一个空间。
来给你使用。

这样优点如下:
1,不会造成浪费,基本上都是有多少用多少。
2,能够随时增加,减少。
程序的灵活性更高。也不会出现分配不足的问题。

专业语言不怎么清楚,希望对你理解不会造成太大的影响。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-12-20
动态分配,可以在像数组那样开辟空间进行存储,之后可以释放空间,减少没必要的内存开销,“不容易塞车”
第2个回答  2008-12-20
当你在声明数组时,你必须用一个编译时常量指定数组的长度。但是,数组的长度常常在运行时才知道,这是由于它所需要的内存空间取决于输入数据。例如,一个用于计算学生等级和平均分的程序可能需要储存一个班级所有学生的数据,但不同班级的学生数量可能不同。在这种情况下,我们就可以采取动态分配的方法。一个班需要多少学生的数据,就开辟多少存储空间。这样既可以防止浪费,有可以防止溢出。
在使用动态分配时,需要程序员自己释放所开辟的内存,这点值得注意

参考资料:C和指针

相似回答