Lyn*_*Dev 5 c# c++ garbage-collection object delete-operator
我正在将一个C#项目转换为C++,并且有一个关于在使用后删除对象的问题.在C#中,GC当然会处理删除对象,但在C++中,它必须使用delete关键字显式完成.
我的问题是,可以在整个方法中跟踪每个对象的使用情况,然后在它超出范围(即方法结束/重新分配)后立即将其删除吗?
我知道虽然GC在删除之前等待一定大小的垃圾(~1MB); 它是否这样做是因为使用删除时会产生开销?
由于这是我正在创建的游戏,可能每秒都会创建和删除大量对象,因此最好跟踪超出范围的指针,一旦该大小达到1MB,然后删除指针?
(作为旁注:稍后当游戏优化时,对象将在启动时加载一次,因此在游戏过程中没有太多要删除的内容)
您的问题是您在C++中使用指针.
这是您必须解决的根本问题,然后您的所有问题都会消失.有机会,我对这个大趋势感到厌倦,我在这个问题上创建了一套演示幻灯片.- (CC BY,所以随意使用它们).
看看幻灯片.虽然它们肯定不完全严重,但基本信息仍然是正确的:不要使用指针.但更确切地说,消息应该是:不要使用delete.
在您的特定情况下,您可能会发现自己拥有许多长寿命的小物件.这确实是现代GC处理得非常好的情况,以及哪些引用计数智能指针(shared_ptr)处理效率较低.如果(并且仅当!)这成为性能问题,请考虑切换到小型对象分配器库.
| 归档时间: |
|
| 查看次数: |
2516 次 |
| 最近记录: |