动态分配或浪费内存?

| 我有一个2D整数数组,用于图块映射。 映射的大小未知,并在运行时从文件中读取。当前最大的文件是2500个项目(50x50网格)。 在前面的问题中,我有一种动态分配内存的有效方法,但是人们一直说这是个坏主意,因此我一直在考虑是否仅使用大数组,而在使用较小的映射时不填满它。 人们是否知道任何一种解决方案的利弊?欢迎任何建议或个人意见。 C ++ btw 编辑:所有地图都是我制作的,因此我可以选择最大尺寸。     
已邀请:
我的偏好是动态分配。这样一来,如果您遇到一张大得惊人的地图,您(希望)如果正确编写就不会溢出,而使用固定大小,唯一的选择就是返回错误并失败。 大概加载瓦片地图是很少的操作。我也愿意打赌,您甚至无法衡量两者之间有意义的速度差异。除非有明显的性能下降,否则您实际上正在遇到其他问题,这会导致您遇到问题,静态大小的问题似乎是过早的优化,并在以后提出问题。     
例如,最简单的方法可能是ѭ0,以使其具有动态大小,并让库为您完成所有分配。这样可以防止意外泄漏内存。     
这完全取决于您尚未说明的要求:-) 如果您希望您的应用尽可能快地运行,而又无法处理较大的图块地图,那么请务必使用大型数组。对于基于PIC的小型嵌入式系统,这可能是理想的方法。 但是,如果您希望代码健壮,可扩展,可维护并且通常适合更广泛的受众,请使用STL容器。 或者,如果您只是想学习东西,而不关心可维护性或性能,请尝试从头开始编写自己的动态分配容器。     
我相信人们通过分配随机大小的内存块而无法动态管理结果所涉及的问题,并且无法有效管理释放后剩下的随机大小的漏洞。如果您要分配固定大小的图块,那么这可能不是问题。 我看到很多人建议分配一个大内存块并自己进行管理。那可能是一个替代解决方案。     
动态分配内存是程序中的瓶颈吗?是引起性能问题的原因吗?如果没有,那么只需保持动态分配,就可以处理任何地图大小。如果是,则可以使用某些数据结构,该数据结构不会取消分配已分配的内存,而是使用其旧缓冲区,并在需要时重新分配更多的内存。     

要回复问题请先登录注册