4つの領域をコーディングする

コードメモリは主に4つのセクションに分かれています

  1. コードエリア
  2. グローバルエリア
  3. スタックエリア
  4. ヒープ領域

コード領域とグローバル領域は実行前であり、スタック領域とヒープ領域は実行後です。つまり、exeファイルが実行されていない場合、スタック領域とヒープ領域はありません。

1.コード領域

つまり、exeファイルをプログラミングした後のコード

特徴:

  • 唯一

      プログラムを一度実行することは不可能なので、すべてのコードを再度コピーして、コード領域のコピーは1つだけにします。

  • 守秘義務

      プログラムがexeファイルになった後は、exeファイルのソースコードを確認しないでください。

2.グローバルエリア

  • グローバル変数
  • 静的変数
  • 定数(グローバル変数のみがグローバル領域であることに注意してください)

定数に注意が必要な理由は、ローカル定数は変更できないように見えますが、アドレスへのポインタで変更できるため、ローカル定数を変更できるため、ローカル定数のアドレスがグローバル領域にないためです。

コードを直接見てください:

#include<iostream>
using namespace std;

int a = 10;
int aa = 20;

const int d = 10;
const int dd = 20;

int main()
{
	int b = 10;
	int bb = 20;

	static int c = 10;
	static int cc = 20;

	const int e = 10;
	const int ee = 20;

	cout << "全局变量  " << int(&a) << endl;
	cout << "全局变量  " << int(&aa) << endl << endl;


	cout << "局部变量  " << int(&b) << endl;
	cout << "局部变量  " << int(&bb) << endl << endl;


	cout << "静态变量  " << int(&c) << endl;
	cout << "静态变量  " << int(&cc) << endl << endl;

	cout << "全局常量  " << int(&d) << endl;
	cout << "全局常量  " << int(&dd) << endl << endl;


	cout << "局部常量  " << int(&e) << endl;
	cout << "局部常量  " << int(&ee) << endl;

	system("pause");
	return 0;
}

ローカル定数とローカル変数のアドレスが比較的近いのに対し、他の3つは比較的近いことがわかります。

3.スタック領域

特徴:

  • 自動アプリケーション、自動リリース、コンパイラ管理

      主にローカルパラメータ、関数内のパラメータがあります

4.ヒープ領域

  • 手動アプリケーション、手動リリース、プログラマー管理
  • リリースしない場合、コンパイラがリリースします

       主に新しいオブジェクト

おすすめ

転載: blog.csdn.net/qq_46423166/article/details/112299965