メモリ安全性とは?
メモリ安全性とは、確保した領域の範囲外へのアクセスや、解放済み領域の参照といった不正なメモリ操作が起こらないことが保証される性質。C/C++はこの保証がなく、バッファオーバフローや解放後使用がそのまま脆弱性になる。Rustのように所有権の仕組みで言語レベルに保証を持たせた言語がある。
エンベデッドシステムスペシャリスト試験の過去問では1回出題されています。
めもりあんぜんせい
メモリ安全性の意味
確保した領域の範囲外へのアクセスや、解放済み領域の参照といった不正なメモリ操作が起こらないことが保証される性質。C/C++はこの保証がなく、バッファオーバフローや解放後使用がそのまま脆弱性になる。Rustのように所有権の仕組みで言語レベルに保証を持たせた言語がある。
メモリ安全性の具体例
配列の境界チェックや、参照の有効期間をコンパイル時に検証することで、実行時の不正アクセスを排除する。
メモリ安全性は試験でどう引っ掛けられる?
MISRA-Cに従ってもメモリ安全性が保証されるわけではない(規約は危険な書き方を減らすもので、言語レベルの保証ではない)。またガベージコレクションがあれば解放後使用は防げるが、配列の範囲外アクセスは境界検査の有無で決まる別の話。型安全性とも同義ではない。
メモリ安全性と関連する用語
メモリ安全性が出た過去問
組込みシステムにおける、ソフトウェアのメモリ安全性(Memory Safety)を考慮した事例として、適切なものはどれか。
正解:バッファオーバーフロー、メモリリークなどの潜在的なセキュリティ上の問題を回避するために、メモリの保護機能を備えたプログラム言語を使用する。
要点:メモリ安全性は領域外アクセスを言語レベルで防ぐこと
メモリ安全性とは、確保した領域の外側への読み書きや、解放済み領域の参照などが起こらないことを指す。C言語のようにポインタ操作を制約しない言語ではこれらが容易に混入するため、境界検査や所有権による管理といったメモリ保護の仕組みを言語自体が備えたものを使うことが、根本的な対策になる。
出典:令和7年度 秋期 エンベデッドシステムスペシャリスト試験 am2 問17(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。