3

(dmd v2.051でコンパイル)

このようなコード:


import dsfml.graphics.all;

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

1分でエラーが発生し、例外がスローされます。メモリリークが原因だと思います。

一方、このようなコードは、アクセス違反や例外を引き起こします。

インポートdsfml.graphics.all;

void main()
{{
    auto rect = new Image(1024、1024);
    rect.dispose();
}

私は実際に画像や他の同様のクラスで何をすることになっていますか?メモリリークとアクセス違反の両方を回避したいと思います。

4

1 に答える 1

2

現在、コードを確認することはできませんが、dispose()は実際には一般向けではないと思います。

DSFMLは、SFMLをラップするCSFMLの単なるラッパーであることを忘れないでください。ユーザーが何も壊さないように、細心の注意を払う必要があります。DSFMLは通常の使用には問題ありませんが、while(true)ループのような極端なケースを処理することはできません。

このメンテナンスの悪夢を終わらせるために、SWIGベースのアプローチに切り替える方がよいかどうかをしばらく考えていました。これにより、SFGUIなどの拡張機能の使用もはるかに簡単になります。

于 2011-02-10T16:52:13.323 に答える