MFCデバッグモードでのメモリ確保 – プログラミング – Home

MFCデバッグモードでのメモリ確保
 
通知
すべてクリア

[解決済] MFCデバッグモードでのメモリ確保


キム
 キム
(@キム)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

はじままして、キムと申します。

初歩的な質問ですが教えてください。
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

以上、よろしくお願いいたします。


引用未解決
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

確実回答ではありませんが

この場合

>PBYTE SendBuf
これで1つ領域確保されますよね
宣言だけでなく アドレスを示すための情報領域

さらに
>SendBuf = new BYTE [3];
これで3つ

計 4つになりませんか


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

Debug版ではnewはDEBUG_NEWに置きかえられ、
DEBUG_NEWは領域を多く取り、確保した領域を 0xCDで埋めて、
前後になんかくっつけてから、さらに確保したファイル名と行番号を保持したりしてます。

ファイルの頭のほうにある#defineをなくせばそこらへんはやめてくれるとは思いますが、
その場合当然メモリリークの検出はできなくなります。


返信引用
アイススケーター
 アイススケーター
(@アイススケーター)
ゲスト
結合: 23年前
投稿: 280
 

>PBYTE SendBuf
これはスタック・エリアに確保されるので、別領域です。

>SendBuf = new BYTE [3];

メモリの確保は最低16バイト単位だと思いますが。
このようにしないと、実際に確保する領域よりも管理領域のほうが大きくなるから


返信引用
キム
 キム
(@キム)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

なるほど、勉強になりました。
woodさん、PAIさん、アイススケーターさん どうも有難うございました


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました