日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

內存四區,分別是全局區(靜態區),代碼區,棧區,堆區.

從內存分配來看,可以分為靜態分配和動態分配.

靜態分配

內存分配完成之后,不會釋放,直到程序結束

  1. 靜態區,分配之后,不會釋放,可讀可寫
  2. 代碼區,一旦分配,可讀不可寫,不能修改

動態分配

  1. 棧區,系統自動分配和釋放
  2. 堆區,手動分配和手動釋放

看圖,強化一下記憶

認識c語言的內存四區

內存四區

全局區(靜態區)

int num = 10;  //靜態分配,不回收

void show()
{
	int data = 15;	//動態分配,離開作用域就釋放,可以通過內存監視 
	printf("%p,%p", &num, &data);	//根據打印的地址,通過內存1和內存2查看全局變量和局部變量的聲明周期

	num = 20;
	data = 30;
	printf("n");
}

int main(int argc, char *argv[])
{
	show();
	printf("nnn");
	show();

	system("pause");
	return 0;
}

代碼區(只讀,不可寫入)

void code()
{
	printf("hello world!n");
}

int main(int argc, char *argv[])
{
  	//根據打印的地址0x0C71850 通過反匯編窗口 輸入0x0C71850 會發現自動改為_code(),證明函數名就是地址
	printf("%pn", code);
	char *p;
	scanf("%p", &p);		//輸入打印的地址
	printf("[%c]", *p);

	*p = 'a';		//引發了異常: 寫入訪問權限沖突,證明代碼區是可讀不可寫
	system("pause");
	return 0;
}
認識c語言的內存四區

通過指針獲取方法(地址),寫入數據,報訪問權限沖突

棧區

void stack(int x)
{
	//x arr在離開作用域(方法)就回被回收掉
  //可以在內存中,
	int arr[] = { 1,2,3 };
	printf("%p,%pn", &x, &arr);
}

int main(int argc, char *argv[])
{
	stack(1);
	system("pause");
	return 0;
}

堆區

void heap()
{
	//手動在堆區分配10兆
	void *ptemp = malloc(1024 * 1024* 10);

	if (ptemp!=NULL)
	{
		//根據分配好的地址,釋放分配的內存,可以通過任務管理器監視程序所占內存
		free(ptemp);
	}
}

int main(int argc, char *argv[])
{
	heap();		
	printf("n");
	heap();			//查看任務管理器,看運行內存大小
	system("pause");
	return 0;
}

本文是2016.09.07,是當時學C語言記錄下的筆記,本想每天寫一篇博文,有些吃力,還是遷移文章來的實在.

分享到:
標簽:語言
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定