【发布时间】:2023-04-02 14:10:01
【问题描述】:
我正在使用 c++ 编写应用程序并使用英特尔检查器进行内存分析。
但是,我对在内存分析测试中获得的各种结果有疑问,以发现潜在的内存问题。
我正在尝试做一个更好的稳定应用程序,但我知道它们仍然是基础知识,目前我对代码进行了太多研究,我有点困惑。感谢您帮助他们澄清问题。
- 我应该将 char buffer[30] 初始化为默认值吗?
- 什么应该是 LPWSTR 的默认值(我试过 NULL)仍然抱怨我的成员变量上未初始化的内存访问。
- 初始化结构。我尝试使用 memset。探查器仍然看起来不高兴,并抱怨未初始化的内存访问。
一个实例是 在我的调用者类构造函数中,我已将句柄初始化为
m_hidHandle = NULL; //member variable and an object of struct hid_device
之后我调用了 hid_write。
在那里,hid_write 又调用 writeFile(这是 api 类 hid.c)
WriteFile(dev->device_handle, buf, length, NULL, NULL);
在这里,我抱怨未初始化的内存访问。 我什至尝试检查 WrtieFile 的 api 文档。我要抱怨的东西仍然不干净 内存问题。
另一个例子是 我有一个成员变量
WINHTTP_CURRENT_USER_IE_PROXY_CONFIG m_pConfig;
在构造函数中,我试图将结构初始化为 NULL:
memset( &m_pConfig, 0, sizeof(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG) );
它抱怨未初始化的内存访问。我什至尝试过
//proxyConfig.fAutoDetect = false;
//proxyConfig.lpszAutoConfigUrl = NULL;
//proxyConfig.lpszProxy = NULL;
//proxyConfig.lpszProxyBypass = NULL;
仍然没有帮助。
【问题讨论】:
-
您能否发布一些代码来演示您正在做什么以及引发分析器错误的行?
-
我已将它们添加到初始发布中。谢谢!!!
-
@linuxdeveloper,只是想知道,
LPWSTR(和WriteFile)来自哪里?我知道 Linux 中没有这样的东西,但您使用的hid_device似乎是,除非您在应用程序中本地定义它。 -
是的,它们没有在 linux 内核中使用。而是由使用 vc++ 构建的主机应用程序
标签: c++ visual-c++ memory-management initialization default-value