new申请到的内存除了delete,还有哪些方法让内存消失
代码如下:
void DeCodePackages()
{
int i = 0;
BYTE* p1;
BYTE* p2;
BYTE* p3;
while ( Buf_Array[i] )
{
p1 = Buf_Array[i];
if( *(p1+4) == 0x78 )
{
p2 = new BYTE [ *(DWORD*)p1 + 20 ];
CopyMemory( p2, &Buf_DeCode[0], sizeof(Buf_DeCode) );
CopyMemory( (p2+8),p1,4 );
CopyMemory( p2+20 ,p1+4, *(DWORD*)p1 );
p3 =(BYTE*) DeCode( (DWORD)p2 ); //解密后的缓冲区没有释放
CopyMemory( p3+16,p3+8,4 );
p1 = new BYTE [ *(DWORD*)(p3+8) + 4 ];
CopyMemory(p1,p3+16,*(DWORD*)(p3+8) + 4);
delete [] Buf_Array[i];
Buf_Array[i] = p1;
delete [] p2;
}
i++;
}
}
Buf_Array是一个指针数组,用OD调试,在Buf_Array[i] = p1;这里下断点,一个一个观察,发现完全正常,Buf_Array里的指针指向的缓冲区都是存在的
如果我不下断点,直接对Buf_Array观察发现总有几个指针指向的缓冲区消失了,这BUG真奇怪