はじままして、キムと申します。
初歩的な質問ですが教えてください。
MFC(Visual Studio 6.0)のデバッグモード中にバイナリ3byteのメモリ確保
を行おうとしています。
すると■行のメモリ領域が確保されます。(赤色表示)
3byte取りたいだけなのにこれだけの領域を取ってしまう
というのはデバッグモードでは有得る事なのでしょうか?
PBYTE SendBuf;
SendBuf = new BYTE [3];
■007E6D88 CD CD CD FD FD FD FD BA ヘヘヘ....コ
■007E6D90 0D F0 AD BA 0D F0 AD BA . ・ウ. ・ウ
■007E6D98 AB AB AB AB AB AB AB AB ォォォォォォォォ
007E6DA0 EE FE EE FE EE FE EE FE ........
■007E6DA8 00 00 00 00 00 00 00 00
以上、よろしくお願いいたします。
確実回答ではありませんが
この場合
>PBYTE SendBuf
これで1つ領域確保されますよね
宣言だけでなく アドレスを示すための情報領域
さらに
>SendBuf = new BYTE [3];
これで3つ
計 4つになりませんか
Debug版ではnewはDEBUG_NEWに置きかえられ、
DEBUG_NEWは領域を多く取り、確保した領域を 0xCDで埋めて、
前後になんかくっつけてから、さらに確保したファイル名と行番号を保持したりしてます。
ファイルの頭のほうにある#defineをなくせばそこらへんはやめてくれるとは思いますが、
その場合当然メモリリークの検出はできなくなります。
>PBYTE SendBuf
これはスタック・エリアに確保されるので、別領域です。
>SendBuf = new BYTE [3];
メモリの確保は最低16バイト単位だと思いますが。
このようにしないと、実際に確保する領域よりも管理領域のほうが大きくなるから
なるほど、勉強になりました。
woodさん、PAIさん、アイススケーターさん どうも有難うございました