このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ポインターと整数間での変換は安全ではありません
ポインターと整数型間の変換によるミスアライメントまたは不適切な結果
説明
この欠陥は、intptr_t
や uintprt_t
などのポインター型と、enum
、ptrdiff_t
、pid_t
などの整数型の間で変換が行われた場合に発生します。
リスク
ポインターと整数とのマッピングは、環境のアドレス指定構造と必ずしも一致するとは限りません。
ポインターから整数への変換により、以下が生じる可能性があります。
整数値の切り捨てまたは範囲外の整数値。
不適切な整数型。
整数からポインターへの変換により、以下が生じる可能性があります。
ポインターまたはオブジェクトのミスアライメント。
不適切なポインター アドレス。
修正方法
可能であれば、ポインターから整数への変換または整数からポインターへの変換を避けます。void
ポインターを整数に変換する場合は、値が変化しないように、以下の型を使用します。
C99 —
intptr_t
またはuintptr_t
C90 —
size_t
またはssize_t
例
結果情報
グループ: プログラミング |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: BAD_INT_PTR_CAST |
影響度: Medium |
バージョン履歴
R2016b で導入