Windows での関数 alloc と関数 dealloc の不一致
不適切な割り当て解除関数がメモリ破損問題を引き起こす
説明
この欠陥は、使用する Windows® 割り当て解除関数とそれに対応する割り当て関数の組み合わせが不適切な場合に発生します。
リスク
割り当て関数に対応しない関数でメモリの割り当てを解除すると、メモリ破損または未定義の動作が発生する可能性があります。旧バージョンの Windows を使用している場合、不適切な関数を使用すると、新しいバージョンとの互換性の問題が発生する可能性もあります。
修正方法
次の表に示された関数に従って、割り当て関数と割り当て解除関数を適切に組み合わせます。
割り当て関数 | 割り当て解除関数 |
---|---|
malloc() | free() |
realloc() | free() |
calloc() | free() |
_aligned_malloc() | _aligned_free() |
_aligned_offset_malloc() | _aligned_free() |
_aligned_realloc() | _aligned_free() |
_aligned_offset_realloc() | _aligned_free() |
_aligned_recalloc() | _aligned_free() |
_aligned_offset_recalloc() | _aligned_free() |
_malloca() | _freea() |
LocalAlloc() | LocalFree() |
LocalReAlloc() | LocalFree() |
GlobalAlloc() | GlobalFree() |
GlobalReAlloc() | GlobalFree() |
VirtualAlloc() | VirtualFree() |
VirtualAllocEx() | VirtualFreeEx() |
VirtualAllocExNuma() | VirtualFreeEx() |
HeapAlloc() | HeapFree() |
HeapReAlloc() | HeapFree() |
例
結果情報
グループ: 動的メモリ |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: WIN_MISMATCH_DEALLOC
|
影響度: Low |
バージョン履歴
R2017b で導入