在DSFML2中进行破坏

时间:2011-02-07 23:35:01

标签: memory d sfml

(使用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();
}

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

1 个答案:

答案 0 :(得分:2)

现在无法查看代码,但我认为dispose()并非真正用于公共用途。

请记住,DSFML只是CSFML的包装器,后者又包装了SFML。 您需要非常小心,以确保用户不会破坏任何东西。 DSFML适用于正常使用,但无法处理像while(true)循环这样的极端情况。

如果最好转换到基于SWIG的方法来结束这种维护噩梦,我一直在思考。这可能也会使得使用SFGUI等扩展变得更加容易。