變量存儲類型 動(dong)態內存分(fen)配(pei)詳(xiang)解
時間:2018-07-26 來(lai)源:未(wei)知
【一】、變量的存儲類型
1. 變量的定義
變量是對(dui)內存空間的抽(chou)象
2. 變量的生命(ming)周(zhou)期
變(bian)量在內存(cun)中的存(cun)儲時間(jian)(jian)。既變(bian)量從申請(qing)內存(cun)到釋放內存(cun)的一段時間(jian)(jian)。
3. 變量(liang)的(de)作(zuo)用域
變量(liang)的作用范圍,既哪部分的程序可以(yi)使用該變量(liang)。
4. 鏈接點
外部鏈接
可以在一個多文(wen)件(jian)程序(xu)中(zhong)的(de)任(ren)何(he)地方(fang)使用(auto 修飾的(de)全局變量(liang))
內部鏈接
在一個文件(jian)的(de)任何地方使用(yong)(static 修飾的(de)變(bian)量只可以(yi)在本文件(jian)內使用(yong))
空鏈接
代(dai)碼塊作用(yong)域或者(zhe)函(han)數原(yuan)型(xing)作用(yong)域(只能(neng)在函(han)數中使用(yong))
5. auto、static、extern、register
static:
1. 改變(bian)變(bian)量的(de)作用域
2. 延長(chang)變(bian)量的生命周期
3. 只初始化一次
register:
register修(xiu)飾的(de)變量,希望分(fen)(fen)配一(yi)個(ge)寄存器來存放(fang)變量的(de)值(zhi),但(dan)是不(bu)(bu)一(yi)定能分(fen)(fen)配到。如果分(fen)(fen)配不(bu)(bu)到就(jiu)放(fang)在(zai)內存里。
extern:調(diao)用外部(bu)文件的
4G虛擬內存空間劃分:
3G-4G:內核空(kong)間
0G-3G:用(yong)戶空間
棧(zhan)區(qu)(局(ju)部變量)
堆區(用戶手動分配的空間)
.data段(初始化的全局變(bian)量和初始化的靜態局部變(bian)量)
數據(ju)區 --->>> .bss段(未(wei)(wei)初(chu)始(shi)化的全局(ju)變量和未(wei)(wei)初(chu)始(shi)化的靜態局(ju)部變量)
常量區(只讀)
代(dai)碼段(只讀
【二】、動態內存分配
/****************************
*功能(neng):在堆中分配(pei)空(kong)間
*參數:申(shen)請的(de)堆空間的(de)大小(xiao),單(dan)位是位
*返回值:
* 成(cheng)功:返(fan)回一個可(ke)用(yong)的地址(zhi)
* 失(shi)敗:返回(hui)NULL
****************************/
void *malloc(size_t size);
#include
/*************************************
*功能:設置指針指向的(de)內存空間
*參數:
* s:要設(she)置的內存空間的首地址
* c:要寫入內存中(zhong)的(de)值
* n: 寫入多(duo)少個(ge)字節
*************************************/
void *memset(void *s, int c, size_t n);
/*************************************
*功能(neng):釋(shi)放(fang)堆空(kong)間(jian)
*參(can)數:指向要釋放的堆空間(jian)的首地址
*************************************/
void free(void *ptr);
注意(yi):釋放完(wan)堆(dui)空間以后,將指(zhi)針賦值為NULL。
malloc函數的一般(ban)傳(chuan)參形式:
int *p = (int *)malloc(10*sizeof(int));
【三】、make工程管理工具
1. 簡介
工程管理器,顧(gu)名思義,是(shi)指(zhi)管理較多的(de)文件
特點(優勢):
構(gou)根(gen)據(ju)文件(jian)時間(jian)戳自動發現更新過的(de)文件(jian)而(er)減少編譯的(de)工作(zuo)量
命名方式:
GNUmakefile、 makefile、 Makefile
Makefile的三要素:
目標
依賴
規則
Makefile的格式:
目標:依賴
2. 自定義變量的四種(zhong)賦值方式
1.遞歸展開方式VAR=var
特點:向(xiang)后引用
2.簡單方式 VAR:=var
3.?=定(ding)義變量
VAR ?= var
如果VAR變(bian)量在之前定義(yi)過,就使用之前的(de)值,否則使用現在定義(yi)的(de)值
4.+=定(ding)義變量
在原(yuan)來變量(liang)的基(ji)礎上(shang)增加值(zhi)
VAR := add.o
VAR += sub.o
3. 預(yu)定義變量
4. 自動(dong)變量(liang)
依賴文件:
$+ 所有的(de)(de)依(yi)賴文(wen)(wen)件(jian),以空格分開,并以出現(xian)的(de)(de)先(xian)后為(wei)序,可能(neng)包含重(zhong)復的(de)(de)依(yi)賴文(wen)(wen)件(jian)
$^ 所(suo)有不重復的目標依賴文件(jian),以(yi)空格(ge)分開(kai)
$< 第一個依(yi)賴(lai)文件的名稱
$? 所有時間戳比(bi)目標文件晚的依賴文件,并以(yi)空(kong)格分開
目標文件:
$@ 目(mu)標文件的完整名稱
$* 不包含擴(kuo)展名(ming)的(de)目標文件名(ming)稱(cheng)
5.
-C dir讀入(ru)指定目錄下的Makefile
-f file讀(du)入(ru)當(dang)前目錄下(xia)的file文件(jian)作為Makefile
-i 忽略所有的命令執行錯誤

