首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

关于vector内存释放的有关问题

2013-12-13 
关于vector内存释放的问题关于vector使用erase(),clear()函数不能释放内存,而只能通过swap()或者deallacat

关于vector内存释放的问题
关于vector使用erase(),clear()函数不能释放内存,而只能通过swap()或者deallacate()才能释放的问题,已经有许多大牛讨论过了,并且已经给出了一致的结论。但是通过swap函数强制释放内存的方式,系统需要不断的新开辟内存,然后交换内存,对于大数量来说,比如一个存储了3000个结构体的vector变量,这样的效率就非常低下,在交换内存的那一刻,系统都要顿一下,不是非常可取的方式。还有没有其他更优的方式,期待大家一起讨论。 vector 内存释放 erase clear
[解决办法]
如果频繁改变大小而查询比较少就用List 如果查询较多个数也经常变换就用Vector 自己管理的话只在内存大小已知且不会动态变化时用
[解决办法]

引用:
Quote: 引用:

如果明确了需要申请内存空间的量不会做过多的改变,那么何必用vector呢?这是我多年开发游戏的经验。

这里过多的改变时什么标准?一个vector存储结构体的个数从3000到5000的范围变化?能用数组么?如果真的要用数组,每次擦出一部分,再写入一部分,效率一样很低的嘛


一起性申请内存,渲染,再释放。这样只用指针和size_t size就可以了。
游戏流程无非是启动时申请内存,运行时渲染,最后关闭时释放内存。
如果在游戏进行中添加数据的话,就不用vector了,可能和楼上一样用list好一些。

热点排行