[解決済み] C言語で変数はメモリのどこに格納されていますか?
2022-04-13 17:18:23
質問
メモリがデータ、ヒープ、スタック、コードの4つのセグメントに分けられるとして、グローバル変数、静的変数、定数データ型、ローカル変数(関数内で定義、宣言)、変数(メイン関数内)、ポインタ、動的割り当て領域(malloc、callocを使用)は、メモリのどこに格納されるか。
以下のように割り振られると思います。
- グローバル変数 -------> データ
- 静的変数 -------> データ
- 定数データ型 -----> コード
- ローカル変数(関数内で宣言・定義) --------> スタック
- メイン関数で宣言・定義された変数 -----> ヒープ
-
ポインタ(例.
char *arr
,int *arr
) -------> ヒープ - 動的に確保された空間(mallocとcallocを使用) --------> スタック
これらの変数は、あくまでもC言語から見た場合の話です。
C言語初心者なので間違っていたらご指摘ください。
どのように解決するのですか?
この中のいくつかは正解でしたが、問題を書いた人は少なくとも1つの問題であなたをだましたのです。
- グローバル変数 -------> データ (正解)
- 静的変数 -------> データ (正解)
- 定数データ型 -----> コードおよび/またはデータ。定数そのものがデータセグメントに格納され、それへの参照がコードに埋め込まれるような状況では、文字列リテラルを考慮してください。
- ローカル変数(関数内で宣言・定義) --------> スタック(正)。
-
で宣言され、定義された変数。
main
関数 -----> <ストライク ヒープ スタックも(先生はだまそうとしたんだ)。 -
ポインター(例.
char *arr
,int *arr
) -------> <ストライク ヒープ データまたはスタック、コンテキストによって異なります。C言語では、グローバルまたはstatic
この場合、ポインタそのものがデータセグメントに入ってしまいます。 -
動的に割り当てられた領域
malloc
,calloc
,realloc
) --------> <ストライク スタック ヒープ
なお、quot;stack"は正式にはquot;automatic storage class"といいます。
関連
-
[解決済み] C関数から文字列を返す
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] C++のPOD型とは何ですか?
-
[解決済み] Androidでアプリケーションのメモリ使用量を確認するにはどうすればよいですか?
-
[解決済み] C言語で関数をパラメータとして渡すにはどうすればよいですか?
-
[解決済み] プログラム終了前にmallocの後にfreeをしないと本当に何が起こるのか?
-
[解決済み] フリーは、どのように無料化を知っているのですか?
-
[解決済み] C言語で "unsigned long "をprintfする方法は?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
_CRT_SECURE_NO_WARNINGS エラーメッセージ、解決方法
-
[解決済み] x86アセンブリでレジスタに使用されるpush/pop命令の機能は何ですか?
-
[解決済み] gccやldで位置非依存の実行ファイルを作成するための-fPIEオプションとは何ですか?
-
[解決済み] 初期化でポインタ対象の型から修飾語を捨てる
-
[解決済み] flexible array member not at end of structエラーの原因は何ですか?
-
[解決済み] Linux Socket write() によるBad File Descriptor C
-
[解決済み] C - Setデータ構造を実装するには?
-
[解決済み] 難読化Cコードコンテスト2006。sykes2.cの解説をお願いします。
-
[解決済み】CやC++で静的変数はどこに格納されているのか?
-
[解決済み] なぜ.bssセグメントが必要なのですか?