DSFML2 中的破坏

发布于 2024-10-16 11:34:05 字数 430 浏览 3 评论 0原文

(用 dmd v2.051 编译)

代码如下:


import dsfml.graphics.all;

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

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

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

import dsfml.graphics.all;

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

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

(Compiled with dmd v2.051)

Code like this:


import dsfml.graphics.all;

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

Errors out in a minute, throwing an exception. I'd guess it's due to memory leaks.

Code like this, on the other hand, causes access violations and/or exceptions:

import dsfml.graphics.all;

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

What am I actually supposed to do with Images, and other similar classes? I'd like to avoid both memory leaks and access violations.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

埋葬我深情 2024-10-23 11:34:05

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

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

我已经思考了一段时间是否最好改用基于 SWIG 的方法来结束这种维护噩梦。这可能还会使使用 SFGUI 等扩展变得更加容易。

Can't look at the code right now, but I think dispose() isn't really meant for public usage.

Remember that DSFML is just a wrapper around CSFML which in turn wraps SFML.
You need to take a lot of care to ensure the user can't break anything.
DSFML is fine for normal usage but can't handle extreme cases like your while(true) loop.

I've been thinking for a while if it would be better to switch to a SWIG-based approach to end this maintenance nightmare. This would probably also make it much easier to use extensions like SFGUI.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文