C言語——メモリの割り当て方法

1017 ワード

1、グローバル変数と静的変数(static変数)は、コンパイラによって自動的に割り当てられ、解放され、初期化されたグローバル変数と静的変数は同じメモリ領域に配置され、初期化されていないグローバル変数と静的変数は隣接する別のメモリ領域に配置される.
2、スタックは、コンパイラによって自動的に割り当てられ、解放され、主に関数体のアドレス、パラメータ、局所変数であり、静的変数は含まれず、操作方式はデータ構造のスタックに似ている.
3、スタックは、mallocやnewのように、プログラマーが手動で申請と解放を完了し、プログラマーが手動で解放していない場合、プログラムが終了したときにシステムによって解放されていない空間が解放され、その実現方式はデータ構造のスタックとは全く異なり、このときのスタックの実現方式はデータ構造のチェーンテーブルに似ている.
4、プログラムのバイナリコードを格納するスペース.
5、文字定数領域は、定数文字列などがここに格納され、プログラムが終了した後、システムから解放される.
古典的な例です
int a = 0;       
char *p1;        
main()
{
int b;  
char s[] = "abc";  
char *p2;  
char *p3 = "123456"; 123456\0    ,p3   。
static int c =0;   (  )    
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
     10 20         。
strcpy(p1, "123456"); 123456\0     ,         p3    "123456"       。
}