关于LPWSTR的问题
本人通过下面函数得到程序启动的传入参数:
其中 CStringArray m_strCmdArray;
BOOL CMyDlg::GetCmdLine()
{
LPWSTR* argv = NULL;
argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc);
//得到传入字串
for (int i=1; i<argc; i++)
{
CString msg = "";
msg = argv[i];
m_strCmdArray.Add(msg); //保存 字串
}
return TRUE;
}
问题是关闭程序后:
argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc);
执行到这边会内存泄露
为啥会这样呢?
LPWSTR* argv 这个指针没有new呀?
希望哪位大哥可以告诉我下
其中 CStringArray m_strCmdArray;
BOOL CMyDlg::GetCmdLine()
{
LPWSTR* argv = NULL;
argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc);
//得到传入字串
for (int i=1; i<argc; i++)
{
CString msg = "";
msg = argv[i];
m_strCmdArray.Add(msg); //保存 字串
}
return TRUE;
}
问题是关闭程序后:
argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc);
执行到这边会内存泄露
为啥会这样呢?
LPWSTR* argv 这个指针没有new呀?
希望哪位大哥可以告诉我下
...全文
相关推荐
VC字符串的转换.pdf
正确处理字符串编码和类型转换可以避免很多潜在的错误和兼容性问题,提高代码的可移植性和可维护性。
VC常用数据类型转换.doc
了解并正确使用这些转换方法,可以避免潜在的兼容性和性能问题。
c++windows用户管理
**其他注意事项:** - 在实际应用中,可能还需要考虑权限问题,因为某些操作需要管理员权限才能执行。 - 应注意安全性,例如不要在代码中硬编码密码。
C#调用C++版本dll时的类型转换需要注意的问题小结
例如,如果你有一个字符串需要传递,可以使用`[MarshalAs(UnmanagedType.LPWStr)]`,这将把C#的字符串转换为C++的宽字符字符串(LPWStr表示“Long Pointer
BSTR、LPSTR和LPWSTR
### BSTR、LPSTR和LPWSTR的详细解析及其相互转换#### 一、BSTR、LPSTR和LPWSTR概述**BSTR (Basic String)** BSTR 是一种用于 COM 和 OLE


