リターンアドレス【return address】
リターンアドレスとは?

プログラム上で関数が呼び出されると、CPUは呼び出し元の次の命令が置かれたメモリ上の位置(アドレス)を「スタック」(stack)と呼ばれるメモリ領域に保存する。関数側の処理が完了すると、CPUはスタックからそのアドレスを読み取り、実行をその位置へ移す。これにより、プログラムは関数呼び出しの前後で制御の流れを途切れなく保てる。
同じ関数を異なる箇所から何度呼び出しても、それぞれが正しい位置へ戻れるのは、呼び出しの度に固有のリターンアドレスがスタックに積まれるからである。関数の入れ子呼び出しや再帰呼び出しでも、複数のアドレスが順番にスタックへ積み重なり、処理の終了と共に逆順で取り出される。
スタック上のリターンアドレスは、サイバー攻撃の標的になりやすい。バッファオーバーフロー攻撃では、スタック上のバッファ領域に想定を超えるデータを書き込むことでリターンアドレスを上書きし、関数終了時に不正なコードを実行させる。これに対抗するため、現代のオペレーティングシステム(OS)やコンパイラには「スタックカナリア」や「アドレス空間配置のランダム化」といった防御機構が組み込まれている。
メールのリターンアドレス
電子メールでは、配送エラー発生時にエラー通知を返す宛先をリターンアドレスと呼ぶことがある。SMTPではエンベロープ情報として送信時に指定され、メール本文ヘッダの差出人欄とは独立して管理される。迷惑メール対策においては、このアドレスの偽装が問題になることがあり、送信ドメイン認証技術と組み合わせて検証される場合もある。