fiverhythm 发表于 2019-12-19 15:10:46

为什么要手动分配内存,不解。。。

为什么明明可以由系统自动申请分配内存,并自动释放,却还要存在由程序员手动分配,最后还要手动释放?这种手动分配内存有什么特殊存在的意义码?

Croper 发表于 2019-12-19 15:54:58

自动分配内存分配与栈上,使用方便,安全性高,速度稍快,但灵活度低
手动分配内存分配于堆上,灵活度非常高。

举个例子,比如一款游戏。那么一局游戏中势必会出现很多实体(单位,物品,投射物。。),
但是在游戏开始前,你并不会知道这局游戏会出现多少个单位。

这时你有两个选择:
1、自动分配内存:
建立数组,在数组中储存每个实体的信息。
但这样数组长度总是有限的,那么一局游戏里能同时出现的实体数目就是有限的了。

另外,这个“实体数组”,在没有那么多实体时仍然会占据同样的空间,也会浪费内存。
2、手动分配内存:
1)建立链表
2)手动分配数组,当空间不够时再分配更大的。
这两种方法能根据实体数量动态调整分配的内存大小,从而做到空间的充分利用。

我叫MD 发表于 2019-12-19 19:14:23

其实就是楼上的说法:

举个最简单的例子:允许用户输入数字,并且将用户输入的数字记录下来

你准备怎么做:你根本不知道用户会输入多少数字,这时候就需要动态申请内存了,用户每输入一个数字,就申请一块内存

fiverhythm 发表于 2019-12-25 15:32:55

我叫MD 发表于 2019-12-19 19:14
其实就是楼上的说法:

举个最简单的例子:允许用户输入数字,并且将用户输入的数字记录下来


谢谢解答~
页: [1]
查看完整版本: 为什么要手动分配内存,不解。。。