保護されていない動的メモリ割り当て
動的割り当てから返されるポインターに対して NULL または nullptr の値のチェックが行われない
説明
この欠陥は、前回のメモリ割り当てが成功したかどうかを初めにチェックせずに動的に割り当てられたメモリにアクセスしたときに発生します。
リスク
malloc、calloc または realloc を使用してメモリを動的に割り当てる際、要求されたメモリが使用可能でない場合は値 NULL が返されます。割り当ての後、コードでこの NULL 値をチェックせずにメモリ ブロックにアクセスした場合、このアクセスの成功は保証されません。
修正方法
割り当てられたメモリ位置にアクセスする前に、malloc、calloc、または realloc の戻り値が NULL かどうかをチェックします。
int *ptr = malloc(size * sizeof(int));
if(ptr) /* Check for NULL */
{
/* Memory access through ptr */
}例
結果情報
| グループ: 動的メモリ |
| 言語: C | C++ |
| 既定値: オフ |
コマンド ライン構文: UNPROTECTED_MEMORY_ALLOCATION |
| 影響度: Low |
バージョン履歴
R2013b で導入