为什么要手动分配内存,不解。。。
为什么明明可以由系统自动申请分配内存,并自动释放,却还要存在由程序员手动分配,最后还要手动释放?这种手动分配内存有什么特殊存在的意义码? 自动分配内存分配与栈上,使用方便,安全性高,速度稍快,但灵活度低手动分配内存分配于堆上,灵活度非常高。
举个例子,比如一款游戏。那么一局游戏中势必会出现很多实体(单位,物品,投射物。。),
但是在游戏开始前,你并不会知道这局游戏会出现多少个单位。
这时你有两个选择:
1、自动分配内存:
建立数组,在数组中储存每个实体的信息。
但这样数组长度总是有限的,那么一局游戏里能同时出现的实体数目就是有限的了。
另外,这个“实体数组”,在没有那么多实体时仍然会占据同样的空间,也会浪费内存。
2、手动分配内存:
1)建立链表
2)手动分配数组,当空间不够时再分配更大的。
这两种方法能根据实体数量动态调整分配的内存大小,从而做到空间的充分利用。 其实就是楼上的说法:
举个最简单的例子:允许用户输入数字,并且将用户输入的数字记录下来
你准备怎么做:你根本不知道用户会输入多少数字,这时候就需要动态申请内存了,用户每输入一个数字,就申请一块内存 我叫MD 发表于 2019-12-19 19:14
其实就是楼上的说法:
举个最简单的例子:允许用户输入数字,并且将用户输入的数字记录下来
谢谢解答~
页:
[1]