为什么DELETE总是出错
开始我以为因为COPYMEMORY的长度超过了原来申请的大小的时候才出错的
后来我把申请的空间变大,但是也是出错,为什么呢?
if( Str != NULL ) { DWORD SourceLen = _tcslen( *Str ); DWORD InsertLen = _tcslen( &Text ) - 1; TCHAR *TempStr = new TCHAR[ SourceLen + InsertLen + 100]; CopyMemory( TempStr,*Str,Location * sizeof(TCHAR) ); TempStr[ Location ] = Text;//[i - Location - 1]; CopyMemory( TempStr + (Location +1),*Str + Location + InsertLen,(SourceLen - Location - InsertLen + 1 ) * sizeof(TCHAR)); //TempStr[SourceLen + InsertLen + 1 ] = '\0'; delete [] *Str; *Str = TempStr; }
char *InsertText(char *Src,int Loc,char *Insert){ if( Src != NULL ) { DWORD SourceLen = _tcslen(Src); DWORD InsertLen = _tcslen(Insert); char *TempStr = new char[SourceLen + InsertLen]; strncpy(TempStr,Src,Loc); strcpy(&TempStr[Loc],Insert); strcpy(&TempStr[Loc+InsertLen],&Src[Loc]);// return TempStr; }// return 0;}///////////// call://"ABCDE12345FGHIJ"char src[]="ABCDEFGHIJ";char ins[]="12345";char *pAll=InsertText(src,5,ins);delete []pAll;