(使用dmd v2.051编译)
这样的代码:
import dsfml.graphics.all;
void main()
{
while(true)
auto rect = new Image(1024, 1024);
}
一分钟内出错,抛出异常。我猜这是由于内存泄漏。
另一方面,此之类的代码会导致访问冲突和/或异常:
import dsfml.graphics.all; void main() { auto rect = new Image(1024, 1024); rect.dispose(); }
我实际上应该对图像以及其他类似的类做些什么?我想避免内存泄漏和访问冲突。
答案 0 :(得分:2)
现在无法查看代码,但我认为dispose()并非真正用于公共用途。
请记住,DSFML只是CSFML的包装器,后者又包装了SFML。 您需要非常小心,以确保用户不会破坏任何东西。 DSFML适用于正常使用,但无法处理像while(true)循环这样的极端情况。
如果最好转换到基于SWIG的方法来结束这种维护噩梦,我一直在思考。这可能也会使得使用SFGUI等扩展变得更加容易。