_tcsdup这个函数容易出现堆错误
#include <string.h> #include <stdio.h> #include <tchar> int main( void ) { TCHAR buffer[] = _T("This is the buffer text"); TCHAR *newstring; _tprintf( _T("Original: %s\n"), buffer ); newstring = _tcsdup( buffer ); _tprintf( _T("Copy: %s\n"), newstring ); free( newstring ); }
这是这个函数的标准调用demo,需要注意的是,即使buffer为空,返回的字符串也不是NULL,而是一个有地址的空字符串,这样直接判断地址是否为空,不为空再free会出错,这是改bug的体会