一個函數(shù)有一個最大的內(nèi)存空間限制
成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計(jì),昌樂網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:昌樂等地區(qū)。昌樂做網(wǎng)站價格咨詢:18982081108
大概是int的10000
內(nèi)存空間和程序本身定義的變量有關(guān)
帶遞歸的程序內(nèi)存空間是
本身定義的變量*遞歸層數(shù)
遞歸層數(shù)(就是從搜索樹的高度)
這與C語言自身無關(guān),屬于運(yùn)行時操作系統(tǒng)的問題,應(yīng)該借助于操作系統(tǒng)的進(jìn)程內(nèi)存分配去向操作系統(tǒng)查詢。如果用C語言的內(nèi)存管理函數(shù)去計(jì)算,會相當(dāng)麻煩,而且計(jì)算方法隨著操作系統(tǒng)平臺的不同而變化。
如果是在Windows環(huán)境運(yùn)行,可以使用Windows的API函數(shù)GlobalMemoryStatusEx,返回的結(jié)構(gòu)中dwTotalVirtual的值與最大值之間的差,就是當(dāng)前進(jìn)程所占用的內(nèi)存空間大小。
在程序運(yùn)行時,一個函數(shù)占用一段連續(xù)的內(nèi)存。當(dāng)調(diào)用一個函數(shù)時,實(shí)際上是跳轉(zhuǎn)到函數(shù)的入口地址,執(zhí)行函數(shù)體的代碼,完成后返回。
函數(shù)指針指向一個函數(shù)的入口地址,也就是函數(shù)存儲空間的首地址。
在C語言中,數(shù)組名代表數(shù)組的首地址,同樣函數(shù)名代表了函數(shù)的首地址,因此在賦值時,直接將函數(shù)指針指向函數(shù)名就行了。
因此函數(shù)指針調(diào)用vs直接調(diào)用,占用的存儲空間都是一樣的。相當(dāng)于數(shù)組指針和數(shù)組名的關(guān)系,指向的都是同一個數(shù)組。
局部變量存在函數(shù)體里面,比如轉(zhuǎn)換成8086匯編(示意):
func: 定義變量
push ax
pop ax
ret
main: call func
滿意請采納,謝謝!
這個..直接sizeof(int);
sizeof(float);
...就可以,注意使用%u輸出控制符
例如
printf("int數(shù)據(jù)類型占用%u字節(jié)\n",
sizeof(int));
輸出就是
int數(shù)據(jù)類型占用4字節(jié)