發(fā)布時間:2021-09-30 16:37:00來源:有考培訓(xùn)網(wǎng)綜合
洛陽達(dá)內(nèi)教育C++培訓(xùn)正規(guī)嗎?C++內(nèi)存分配方式有3種,第一種是從靜態(tài)存儲區(qū)域分配。內(nèi)存在程序編譯的時候就已經(jīng)分配好,這塊內(nèi)存在程序的整個運行期間都存在,例如全局變量,static變量。第二種在棧上創(chuàng)建,在執(zhí)行函數(shù)時,函數(shù)內(nèi)部的局部變量的存儲單元都是可以在棧上創(chuàng)建的。函數(shù)執(zhí)行結(jié)束時這些存儲單元自動被釋放,棧內(nèi)存分配運算內(nèi)置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。第三種是在堆上分配,亦稱動態(tài)內(nèi)存分配,程序在運行的時候用malloc或new申請任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時用free或delete釋放內(nèi)存,動態(tài)內(nèi)存的生存期由我們決定,使用靈活,但是容易出錯。
洛陽達(dá)內(nèi)教育C++培訓(xùn)正規(guī)嗎?
達(dá)內(nèi)教育隸屬于加拿大達(dá)內(nèi)IT培訓(xùn)集團,于2002年成立 ,是達(dá)內(nèi)IT培訓(xùn)集團直屬學(xué)院。學(xué)院成立旨在建立軟件高級人才培養(yǎng)的通道,促進我國信息產(chǎn)業(yè)迅速發(fā)展。依托達(dá)內(nèi)集團國內(nèi)持平的課程體系(TTS6.0),雄厚的師資力量,廣闊的就業(yè)平臺,迄今為止已與國內(nèi)上萬家IT企業(yè)進行人才輸送合作,其中緊密合作企業(yè)4000余家、深入合作企業(yè)200余家、訂單輸送聯(lián)盟企業(yè)107家。
內(nèi)存操作注意事項
1、用malloc或new申請內(nèi)存之后,應(yīng)該立即檢查指針值是否為NULL,防止使用指針值為NULL的內(nèi)存。
2、不要忘記為數(shù)組和動態(tài)內(nèi)存賦初值,防止將未被初始化的內(nèi)存作為右值使用。
3、避免數(shù)組或指針的下標(biāo)越界,特別要當(dāng)心發(fā)生多1或者少1的操作。
4、動態(tài)內(nèi)存的申請和釋放必須配對,防止內(nèi)存泄露。
5、用free或delete釋放了內(nèi)存之后,立即將指針設(shè)置為NULL,防止產(chǎn)生"野指針"."野指針"不是NULL指針,是指向”垃圾“內(nèi)存的指針。
(五)如何判斷大小端格式
編寫一個C函數(shù),若處理器是big_endian的,則返回0,若是little_endian的,則返回1;
int checkCPU(void){ union w{
int a;
char b;
}c;
c.a = 0x1234;
return(c.b == 0x34);
}
同樣的功能:linux操作系統(tǒng)中的相關(guān)源代碼是這么做的:
static union{char c[4];unsigned long I;}enddian_test = {{'l','?','?','b'}};
#define ENDIANNESS ((char)endian_test.I)
如果ENDIANNESS = l,則為小端格式,反之;
總結(jié):
在C C++程序的編寫中,當(dāng)多個基本數(shù)據(jù)類型或復(fù)合數(shù)據(jù)結(jié)構(gòu)要占用同一片內(nèi)存時,我們要使用聯(lián)合體;當(dāng)多種類型,多個對象,多個事物只取其一時,我們也可以使用聯(lián)合體來發(fā)揮長處!