文書番号: 92930
最終更新日: 2003/08/28
この資料は以下の製品について記述したものです。
- Microsoft C/C++ for MS-DOS, version 7.0
この記事は、以前は次の ID で公開されていました: JP92930
7.00MS-DOSkbprg kbfixlist kbbuglist
概要
この資料は、仮想メモリ関数の4つの障害について説明したものです。
詳細
詳細1
仮想メモリ マネージャ (以下 VMM) の初期化と終了処理を複数回行うとメモリが破壊されます。VMM の1回目の初期化は正常に行われますが、_vheapterm 関数によりヒープを閉じた後の _vheapinint 関数は VMM の初期化を正常に呼び出せません。
対策1
個々のアプリケーションにおいて、VMM の初期化は1回だけにしてください。
この障害は、Visual C++ version 1.0 では改修されています。
詳細2
_vmalloc 関数で同じサイズのメモリ ブロックを連続して割り当てる際に、割り当てに失敗することがあります。
通常、VMM は割り当てを要求されたサイズとすべての有効なメモリ上のブロックサイズを比較しますが、割り当て要求とサイズが一致する有効なブロックがある場合はVMM は要求を満たすメモリ ブロックを供給しないことがあります。
対策2
同じサイズのメモリ ブロックを連続して割り当てることを避けてください。
この障害は、Visual C++ version 1.0 では改善されています。
関連情報2
127201
[VC15] 仮想メモリ関数 _vmalloc の障害
詳細3
_vheapinit 関数の第3引き数 (スワップエリアの指定) に _VM_DISK を含めると_vfree 関数がディスク領域の開放に失敗します。
その結果、テンポラリファイルはディスク全体に空きが無くなるまで大きくなります。
対策3
スワップエリアを_VM_DISK 以外の指定にしてください。
この障害は、Visual C++ version 1.0 では改修されています。
詳細4
割り当てられた個々の仮想メモリ ブロックは、ロックカウントを持ちます。
あるメモリ ブロックがロックカウント 255 を持つ時にメモリ ブロックをロックすると、ロックカウントは 0 になります。
この現象は_vlockcnt 関数の戻り値により確認できます。
対策4
この障害は、Visual C++ version 1.0 では改修されています。
関連情報
-
Visual C++ は、米国 Microsoft Corporation の商標です。
Additional query words: 7.00
Keywords: C7 KBFIX KB92930
Technology: kbAudDeveloper kbVCsearch kbZNotKeyword3 kbZNotKeyword8