C語言的進程空間

一、進程空間

老規矩,上圖:

進程空間

虛擬內存和真實內存之間的轉換

int main(int argc,char * argv[],char **env)//命令行參數和環境變量        
environment variables
{
    while(*env)
    {
        printf("%s\n",*env++);
    }
}
stack 由上向下,大到小;heap由下向上,小到大

 uninitialized data(bss):未初始化變量i,a等等存放在這里,initialized     to zero by exec;
  char*p = "china"  存放在initialized data上的ro只讀數據段。p存放在棧上。
  int a = 4 存放在data 上的rw數據段。
int array[10](10個空間存放在棧上) = {0,1,2,3,4} (存放在text段  上);

#include<stdio.h>//函數的壓棧與存儲
char*fa()
{
  char*pa = "123456";
  char*p = NULL;
p = (char*)malloc(100);
strcpy(p,"caijinlong 1234566");
return p;
}
char*fb()
{
  char*pstr = NULL;
pstr = fa();
return pstr;
}
void main()
{
  char*str = NULL;
  str = fb();
printf("str = %s\n",str);
free(str);
  str = NULL;
  return 0;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容