メモリの使用量が増えていく – プログラミング – Home

メモリの使用量が増えていく
 
通知
すべてクリア

メモリの使用量が増えていく


SOHJIN
 SOHJIN
(@SOHJIN)
ゲスト
結合: 22年前
投稿: 1
Topic starter  

以下のような方法でヒープのメモリ確保を行っています。

struct symbol {
char aaa[32] ;
short bbb ;
short ccc ;
int ddd ;
int eee ;
int fff ;
short ggg ;
short hhh[6][2] ;
short iii ;
short jjj ;
short kkk ;
short lll ;
short mmm ;
char nnn[32] ;
} ;
typedef struct symbol Symbol ;


HANDLE AAA ;
Symbol *sym_pt;

AAA = HeapCreate( 0, 0, 0 ) ;

sym_pt = (Symbol *)HeapAlloc( AAA, HEAP_ZERO_MEMORY, 10 * sizeof(Symbol) ) ;


この方法でメモリを確保したアプリケーションを
動かしたまま、他のアプリケーションが動作すると
メモリ確保をしたアプリケーションのメモリ使用量が
4Kずつ上がってしまいます。
なぜこうなってしまうのかご教授下さい。

Windows2000、VC++6.0、MFC使用


引用解決済
トピックタグ
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

>この方法でメモリを確保したアプリケーションを
>動かしたまま、他のアプリケーションが動作すると
>メモリ確保をしたアプリケーションのメモリ使用量が
>4Kずつ上がってしまいます。
どのようにして確認なさったのですか?
特に特定のアプリケーションのメモリーの使用量が増えるということが何故いえるのですか?
ほかのアプリケーションがいないときにはどうなるんですか?

などなど、分らないことが多くて、あなたの報告なさった内容だけで原因の分る人はそう
多くないと思います(私には見当もつかない)


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

HeapAllocのHelpに下記のようになってましたけど

関数が成功すると、要求したバイト数と同じか、要求したバイト数よりも多くのメモリが確保さ
れます。要求したバイト数よりも多くのメモリが確保された場合、アプリケーションは、そのメ
モリをすべて使用できます。実際に確保されたバイト数を調べるには、HeapSize 関数を使用し
ます。

ここからは私の意見
OSのメモリ管理方法によると思うのですが1バイト単位でメモリ管理をしているはずはないと
思います。
FATなんかでも数Kバイト単位で管理してましたよね。
メモリも同じように最低限のエリア単位で管理してるんじゃないですか。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 23年前
投稿: 196
 

>メモリも同じように最低限のエリア単位で管理してるんじゃないですか。

NT系OSの場合、x86 アークテクチャのプロセッサでは、物理メモリのページサイズ
は 4KB だったと思います。


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

>NT系OSの場合、x86 アークテクチャのプロセッサでは、物理メモリのページサイズ
は 4KB だったと思います。

そうですね。
あの後本(Win32API完璧マスタ)で調べましたがページ内オフセットが12ビットのた
め4K単位のページとして扱われると書いてありました。(178ページ参照)


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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