[解決済み] CやC++でいうところのアクティベーションレコードとは何ですか?
2022-01-29 05:18:34
質問
C/C++プログラマーにとって、この言葉の意味と重要性について教えてください。
少なくとも概念的には、どのプラットフォームでも同じなのでしょうか?
関数でローカル変数を格納するために使われる、割り当てられたメモリのブロックと理解しているのですが......。
もっと知りたい
解決方法は?
アクティベーション・レコードは、スタック・フレームの別称です。コールスタックを構成するデータ構造です。一般に次のような構成になっています。
- 着呼側のローカル
- 呼び出し元への戻りアドレス
- 着信側のパラメータ
- 直前のスタックポインタ(SP)の値
このようにコールスタックは、新しいサブルーチンが追加されるとスタックに追加され、サブルーチンが戻ると(通常)スタックから削除される、任意の数の活性化レコードで構成されています。
実際の構造および要素の順序は、プラットフォームおよび実装によって異なります。
C/C++プログラマ向け。 一般知識 この構造は、呼び出し規約のような特定の実装機能を理解するのに役立ち、さらにバッファオーバーフローが第三者の悪質なコードを実行させる理由も理解することができます。
もっと詳しく 深い知識 は、上記の概念をさらに推し進め、デバッガやデバッグシンボルがない場合でも、プログラマがアプリケーションをデバッグし、メモリダンプを読み取ることができるようにします。
しかし、より一般的には、C/C++プログラマは、趣味のプログラミングキャリアの大部分を、コールスタックについて少しも考えることなく過ごすことができます。
関連
-
[解決済み】coutはstdのメンバではない
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] C++で仮想関数が必要な理由とは?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない