メモリの話題で思い出した。ビルダー6のメモリ管理周り怪しくね?

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  //A
  BYTE *p = new BYTE[ 640*480*4 ];
  Memo1->Lines->Add( (DWORD)p );
  //B
  Graphics::TBitmap *Image = new Graphics::TBitmap;
  Image->PixelFormat = pf32bit;
  Image->Width = 100;
  Image->Height = 100;
  Image->Canvas->FillRect( TRect( 0, 0, 99, 99 ) );
  delete Image;
  //C
  delete[] p;
}

Button1を押すと初回と二回目以降でアドレス変わるし
二回目以降に受け取る領域はStretchDIBits()の転送元にしようとしても失敗する
(A→C→Bと並び換えたり、確保する領域を310432バイト以下にすると問題は起きない)

VCのソースを基に自作したmalloc()とfree()を組み込んで回避したけど
新しいビルダーでは直ってるかな