为什么在调用_tcscpy_s后用delete释放new分配的内存会调试出错?
void nottmp(LPTSTR FilePatch)
{
…………
LPTSTR File_LocalPatch;
File_LocalPatch = new TCHAR[_tcslen(FilePatch)];
_tcscpy_s( File_LocalPatch, _tcslen(File_LocalPatch), FilePatch);
…………
delete [] File_LocalPatch;
}
用malloc()和free()同样出错。
错误信息是:
其原因可能是堆被损坏,这也说明 test.exe 中或它所加载的任何 DLL 中有 bug。
不是用_tcsXXX之类的函数就什么问题没有,望高手解惑。
{
…………
LPTSTR File_LocalPatch;
File_LocalPatch = new TCHAR[_tcslen(FilePatch)];
_tcscpy_s( File_LocalPatch, _tcslen(File_LocalPatch), FilePatch);
…………
delete [] File_LocalPatch;
}
用malloc()和free()同样出错。
错误信息是:
其原因可能是堆被损坏,这也说明 test.exe 中或它所加载的任何 DLL 中有 bug。
不是用_tcsXXX之类的函数就什么问题没有,望高手解惑。
...全文
相关推荐
BSTR和CString和char的转换
需要注意的是,在进行字符串转换时,特别是涉及内存管理的部分(如手动分配内存的情况),务必处理好资源的释放,避免内存泄漏等问题的发生。
delete_directory_file.rar_DeleteDirectory_delete file
= 0) { TCHAR filePath[MAX_PATH]; _tcscpy_s(filePath, MAX_PATH, lpDirectoryName); _tcscat_s(filePath,
删除一个文件目录下的所有文件(C源码,内有详细注释)
; } // 构造完整文件路径 TCHAR filePath[MAX_PATH]; _tcscpy_s(filePath, MAX_PATH, dirPath); _tcscat_s(filePath,
C++中数据类型的转换
```cpp CString s(_T("This is a test")); LPTSTR p = s.GetBuffer(); // 使用完后要及时释放 s.ReleaseBuffer(); ```
mfc中托盘图标编程方法
_tcscpy_s(nid.szTip, TEXT("My Tooltip Text")); // 设置工具提示 ```2.


