(与dmd v2.051一起编译)

像这样的代码:


import dsfml.graphics.all;

void main()
{
    while(true)
        auto rect = new Image(1024, 1024);
}


一分钟内出现错误,引发异常。我猜这是由于内存泄漏造成的。

另一方面,像这样的代码会导致访问冲突和/或异常:

导入dsfml.graphics.all;

无效main()
{
自动矩形=新图像(1024,1024);
rect.dispose();
}


我实际上应该对Images和其他类似的类做什么?我想避免内存泄漏和访问冲突。

最佳答案

现在无法看代码,但我认为dispose()并非真正供公众使用。

请记住,DSFML只是CSFML的包装,而CSFML则包装了SFML。
您需要格外小心,以确保用户不会破坏任何东西。
DSFML适合正常使用,但不能处理while(true)循环等极端情况。

我已经思考了一段时间,如果转而使用基于SWIG的方法来结束这一维护噩梦会更好。这也可能使使用SFGUI之类的扩展变得更加容易。

10-04 22:00