【发布时间】:2021-11-01 14:44:04
【问题描述】:
在我的应用程序的InitInstance 函数中,我有以下代码来重写 CHM 帮助文档的位置:
CString strHelp = GetProgramPath();
strHelp += _T("MeetSchedAssist.CHM");
free((void*)m_pszHelpFilePath);
m_pszHelpFilePath = _tcsdup(strHelp);
一切正常,但它给了我一个代码分析警告:
C26408 避免使用
malloc()和free(),更喜欢nothrow版本的new和delete(r.10)。
当您查看m_pszHelpFilePath 的官方文档时,它确实声明:
如果你给
m_pszHelpFilePath赋值,它必须在堆上动态分配。CWinApp析构函数使用此指针调用free( )。许多人想使用_tcsdup( )运行时库函数来进行分配。此外,在分配新值之前释放与当前指针关联的内存。
是否可以重写此代码以避免代码分析警告,或者我必须添加__pragma?
【问题讨论】:
标签: visual-c++ mfc free code-analysis chm