gpt4 book ai didi

c++ - 类成员的内存泄漏

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

我认为这不需要另一个问题,所以我正在编辑这个非常相关的问题。

我有一个代码可以通过从 char* 转换为 wchar_t* 来绘制文本,我怀疑是内存错误,因为程序内存会以疯狂的速度增加(在几分钟内从 5,000 K 增加到 1,500,000)。

我怀疑是 mbstowcs(),但我想我现在已经找到问题了。

一般情况下,我使用一种相当糟糕的获取颜色的方法来绘制事物。

class MainClass {
public:
ID2D1SolidColorBrush* custom_color;
ID2D1SolidColorBrush get_rgba(float r, float g, float b, float a) {
// render is a validated ID2D1RenderTarget*
render->CreateSolidColorBrush(D2D1::ColorF(r,g,b,a),&custom_color);
return custom_color;
}
};

几乎可以肯定,内存使用量的增加来自此函数。有没有更好的方法可以让我像这样返回自定义颜色?

最佳答案

您似乎并没有实际发生内存泄漏。而内存泄漏工具报告的许多“泄漏”有时是误报。但是,有一个简单的修复方法可以消除 nxtx 可能的泄漏。由于您每次都分配固定数量(250 个字符),因此您可以轻松地从堆栈中分配它:

    const int MY_MAX_STRING_SIZE = 1000;
wchar_t ntxt[MY_MAX_STRING_SIZE]; // simple stack allocation
mbstowcs(ntxt,text.c_str(),MY_MAX_STRING_SIZE);
ntxt[MY_MAX_STRING_SIZE-1] = 0; //insure null termination
render->DrawTextA(ntxt,text.length(),font,trect,color);
}

我注意到的一件事是您的 mbstowc 调用将“大小”指定为要复制的最大字符数,但将 250 硬编码为长度。您确定您确定“尺寸”始终小于 250 吗?

关于c++ - 类成员的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15152421/

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