第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

C 語(yǔ)言入門教程

C 語(yǔ)言基礎(chǔ)教程
01 C 語(yǔ)言簡(jiǎn)介 02 C 語(yǔ)言的程序結(jié)構(gòu) 03 C 語(yǔ)言的編譯 04 C 語(yǔ)言的標(biāo)準(zhǔn) 05 C 語(yǔ)言中的注釋 06 C 語(yǔ)言中的變量 07 C 語(yǔ)言中的變量類型 08 C 語(yǔ)言的常量 09 C 語(yǔ)言的輸入與輸出 10 C 語(yǔ)言中的 printf() 格式輸出 11 C 語(yǔ)言中的類型轉(zhuǎn)換 12 C 語(yǔ)言中的運(yùn)算符 13 C 語(yǔ)言中的算數(shù)運(yùn)算符 14 C 語(yǔ)言中的位運(yùn)算符 15 C 語(yǔ)言中的邏輯運(yùn)算符 16 C 語(yǔ)言中的三目運(yùn)算符 17 C 語(yǔ)言中的分支結(jié)構(gòu) 18 C 語(yǔ)言中的多重分支 19 C 語(yǔ)言中的分支嵌套結(jié)構(gòu) 20 C 語(yǔ)言中的循環(huán)結(jié)構(gòu) 21 C 語(yǔ)言中的 while 循環(huán) 22 C 語(yǔ)言中的 do-While 循環(huán) 23 C 語(yǔ)言中的 for 循環(huán) 24 C 語(yǔ)言中的多重循環(huán)嵌套 25 循環(huán)實(shí)戰(zhàn),打印九九乘法表 26 C 語(yǔ)言中的break和continue 27 C 語(yǔ)言中的 if 語(yǔ)句 28 C 語(yǔ)言中的 switch/case 語(yǔ)句 29 C 語(yǔ)言中的函數(shù) 30 C 語(yǔ)言函數(shù)的定義和聲明 31 C 語(yǔ)言中函數(shù)的參數(shù)傳入類型 32 C 語(yǔ)言中的 main() 函數(shù)參數(shù) 33 make 工具 makefile 34 C 語(yǔ)言中的數(shù)組 35 C 語(yǔ)言中的多維數(shù)組 36 數(shù)組的練習(xí) 37 C 語(yǔ)言中的字符串 38 C 語(yǔ)言中的字符串函數(shù) 39 C 語(yǔ)言字符串練習(xí) 40 C 語(yǔ)言中的指針 41 C 語(yǔ)言中的 struct 42 C 語(yǔ)言中的 union 43 C 語(yǔ)言中的 maclloc free() 44 C 語(yǔ)言中的 enum 45 整體練習(xí)-學(xué)生管理系統(tǒng)

C 語(yǔ)言中的 maclloc free()

在幾乎所有的情況下, C 語(yǔ)言都可以自動(dòng)的來(lái)分配內(nèi)存,這不需要你的參與。這很高效,也很安全。這也是目前主流語(yǔ)言所采取的策略。但是 C 語(yǔ)言除了系統(tǒng)自動(dòng)分配和回收內(nèi)存,還可以自己手動(dòng)來(lái)分配和回收內(nèi)存,讓你的程序更具有靈活性。

1. 動(dòng)態(tài)分配內(nèi)存

int *x;
x = (int *)maclloc(32);

maclloc 函數(shù)的參數(shù)是分配的內(nèi)存的大小,這個(gè)值我們也可以根據(jù)不同變量類型通過(guò) sizeof 這個(gè)函數(shù)來(lái)獲得。其返回值是一個(gè)無(wú)類型的指針。所以這里我們用了顯示的類型轉(zhuǎn)換,將其轉(zhuǎn)換與指針變量類型相同的指針。

2. 回收動(dòng)態(tài)分配的內(nèi)存

回收動(dòng)態(tài)分配的內(nèi)存需要傳入指針變量即可。

free(x);

這樣就釋放了我們之前動(dòng)態(tài)分配的內(nèi)存空間。

3. 示例程序

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *x;
    printf("x value: %p, x address: %p, *x value: %d\n", x, &x, *x);
    x = (int *)malloc(sizeof(x));
    printf("x value: %p, x address: %p, *x value: %d\n", x, &x, *x);
    *x = 10;
    printf("x value: %p, x address: %p, *x value: %d\n", x, &x, *x);
    free(x);

    return 0;
}

運(yùn)行結(jié)果:

x value: 0x7fffeac6bd50, x address: 0x7fffeac6bc60, *x value: 1
x value: 0x7fffe3916270, x address: 0x7fffeac6bc60, *x value: 0
x value: 0x7fffe3916270, x address: 0x7fffeac6bc60, *x value: 10

程序中聲明了一個(gè)整數(shù)型的指針,然后對(duì)這個(gè)指針?lè)峙淞艘粔K內(nèi)存。把這個(gè)分配好的內(nèi)存地址給了指針變量。然后對(duì)這個(gè)地址所表示的變量進(jìn)行賦值。最后再回收分配的內(nèi)存。

4. 小結(jié)

動(dòng)態(tài)內(nèi)存分配可以說(shuō)是 C 語(yǔ)言程序員的噩夢(mèng)。我們可能會(huì)遇到如果分配了內(nèi)存,但是在最后沒(méi)有回收內(nèi)存。這種情況就如同內(nèi)存空洞存在,會(huì)不斷的使系統(tǒng)的可用內(nèi)存減少,因此稱之為內(nèi)存泄露。這是非常常見(jiàn)的內(nèi)存分配的錯(cuò)誤。很多著名的軟件也都會(huì)存在這種問(wèn)題。最簡(jiǎn)單的解決辦法就是通過(guò)定期重啟程序來(lái)解決。還有一種常見(jiàn)錯(cuò)誤就是使用沒(méi)有成功分配的內(nèi)存地址。這也會(huì)引起莫名的錯(cuò)誤。

同時(shí)使用分配內(nèi)存的函數(shù)會(huì)消耗一定的資源,因?yàn)檫@會(huì)讓 C 語(yǔ)言調(diào)用與系統(tǒng)之間的 API ,會(huì)拖慢程序的運(yùn)行。大量的調(diào)用會(huì)產(chǎn)生性能問(wèn)題。

所以在進(jìn)行涉及計(jì)算機(jī)或者其他設(shè)備硬件資源操作的時(shí)候,一定要謹(jǐn)慎。因?yàn)檫@些資源是有限的,一旦被占用了,可利用的資源數(shù)量就會(huì)減少。直至資源的耗盡。