3

(使用 dmd v2.051 编译)

像这样的代码:


import dsfml.graphics.all;

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

一分钟内出错,抛出异常。我猜这是由于内存泄漏。

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

导入 dsfml.graphics.all;

无效的主要()
{
    自动调整 = 新图像(1024、1024);
    rect.dispose();
}

我实际上应该如何处理图像和其他类似的类?我想避免内存泄漏访问冲突。

4

1 回答 1

2

现在无法查看代码,但我认为 dispose() 并不真正适合公众使用。

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

我一直在考虑是否最好切换到基于 SWIG 的方法来结束这个维护噩梦。这也可能使使用 SFGUI 之类的扩展更加容易。

于 2011-02-10T16:52:13.323 回答