gpt4 book ai didi

C++ Win32 Gdiplus 程序在尝试删除 Gdiplus::Bitmap 时崩溃

转载 作者:行者123 更新时间:2023-11-28 00:07:42 28 4
gpt4 key购买 nike

基本上,我试图找出 Gdiplus::Bitmap* 是否不为 NULL(或 0)。如果是这样删除它,然后在适当的位置创建一个“new Gdiplus::Bitmap()”。我正在尝试这样做以防止将来发生任何内存泄漏。

我已经尝试了很多东西,如果我创建位图然后调用 delete,它工作正常(减去 null 检查。)

// private
Gdiplus::Bitmap* last_frame_bmp;

// public
foo::foo() {
if (last_frame_bmp != NULL) { delete last_frame_bmp; }
last_frame_bmp = new Gdiplus::Bitmap(100, 100, PixelFormat32bppPARGB);
}

我所说的崩溃是指程序挂起并且无法启动。

有什么想法吗?

最佳答案

好吧,你的测试是错误的方式——你只是在它为空时才删除。在任何情况下,delete 空指针都是完全安全的;它没有任何效果,所以如果没有这种情况,你会过得更好。

但是无论如何,没有好的 C++ 代码会显式地执行 delete;我们有智能指针可以为我们做到这一点。

您的崩溃是因为您在其他地方损坏了内存 - 我认为太多明确的 newdelete

关于C++ Win32 Gdiplus 程序在尝试删除 Gdiplus::Bitmap 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34582555/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com