青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

happem

#

什么是函數(shù)鏈接規(guī)范

在使用不同編程語言進(jìn)行軟件聯(lián)合開發(fā)的時(shí)候,需要統(tǒng)一函數(shù)、變量、數(shù)據(jù)類型、常量等鏈接規(guī)范,特別是在不同模塊之間共享的接口部分,當(dāng)開發(fā)程序庫的時(shí)候,明確鏈接規(guī)范也是必須遵循的一條規(guī)則。

 

對COM接口及其使用的數(shù)據(jù)類型來說,是否采用統(tǒng)一的鏈接規(guī)范,對其二進(jìn)制兼容性和可移植性都沒有影響。因?yàn)檫B接規(guī)范主要影響到名字改編方案的不同,這樣即使接口兩端對接口本身的解釋不通,只要它們使用一致的成員對齊方式和布局方案、一致的函數(shù)調(diào)用規(guī)范、一致virtual function實(shí)現(xiàn)方式,總是就是一致的C++對象模型。并且保證COM組件升級時(shí)不改變原來的接口和數(shù)據(jù)類型定義,則所有方法的運(yùn)行時(shí)綁定都不會存在問題(所有方法的調(diào)試都被轉(zhuǎn)換為通過對象指針對vptr和vtable及函數(shù)指針的操作,這種間接性不再需要任何方法名即函數(shù)名的參與,而接口名和方法名只是為了讓客戶端的代碼能夠順利通過編譯,但是連接時(shí)就完全不在需要了。)

 

但是對于定義于普通靜態(tài)鏈接庫和動態(tài)鏈接庫中的全局?jǐn)?shù)據(jù)類型、全局函數(shù)、全局變量甚至全局常量,它們的連接規(guī)范必須在兩端保持一致、否則客戶程序會出現(xiàn)連接問題。這是因?yàn)槠胀ǖ姆庋b為DLL的函數(shù)庫或者類庫,客戶程序在創(chuàng)建使一般都需要與它們的導(dǎo)出庫進(jìn)行連接,除非使用loadlibrary()和getprocaddress()函數(shù)對來獲得DLL中函數(shù)的地址,通用的連接規(guī)范要屬C連接規(guī)范:extern‘C’。

具體使用方法,里仁教育嵌入式培訓(xùn)職業(yè)講師詳情講解:

Extern’C’void WinMainCRTStartup();

Extern’C’const CLSID CLSID_DataConvert();

Extern’C’struct Student{.......};

Extern’C’student g_student;

如果是對一段代碼指定連接規(guī)范:

#ifdef  _cplusplus

Extern ‘C’{

#endif

Const int MAX_AGE=200;

#pragma pack(push,4)

Typedef struct _person

{

 Char *m_Name;

 Int m_Age;

}person,*personPtr;

#pragma pack(pop)

Person g_Me;

 Int _cdecl memcmp(const void*,const void*,size_t);

 Void * _cdecl memcpy(void,const void*,size_t);

 Void* _cdecl memset(void*,int,size_t);

#ifdef _cplusplus

}

#endif


嵌入式行業(yè)資訊:全套基礎(chǔ):http://www.lirenedu.org/index.php?ack=lanmu&id=82 

posted @ 2012-09-26 10:32 happem 閱讀(1129) | 評論 (0)編輯 收藏

如何消滅進(jìn)程

有些進(jìn)程在運(yùn)行時(shí)會占用大量的CPU,有些進(jìn)程會導(dǎo)致X死掉,有些進(jìn)程會吞噬掉大量的內(nèi)存,這些進(jìn)程直接影響了用戶的正常工作,最直接的現(xiàn)象就是系統(tǒng)運(yùn)行緩慢,死機(jī)等現(xiàn)象,處理這些進(jìn)程一般的方法就是結(jié)束這個(gè)進(jìn)程,就是所說的把它KILL掉。下面介紹幾種消滅進(jìn)程的方法。

使用Kill命令來消滅進(jìn)程

  如果運(yùn)行了某個(gè)程序?qū)е铝怂罊C(jī),那么就應(yīng)該切換到其他的控制臺下,按下ctrl+alt+fx,其中x可以是1·5,這取決于用戶的try的多少。

 用ps顯示這個(gè)程序的進(jìn)程ID。

這里以xchat為例。

 $ps aux |grep xchat

 Wanglin 12063 0.0 1.8 89536 19028 ?S1 apr06 2:40 xchat

 其中12063就是它的ID。

 也可以使用pgrep來顯示ID,如下:

 $pgrep xchar 

 12063

 使用Kill來消滅這個(gè)進(jìn)程

 使用kil來消滅進(jìn)程,如果消滅不掉,還要加參數(shù)-9,它可以強(qiáng)制結(jié)束進(jìn)程。

  $ kill 12063

  $ kill -9 12063

使用pkill或者killall來消滅進(jìn)程

  它們的共同點(diǎn)就是都可以用程序的名稱作為參數(shù)。

  $ pkill -9 xchat

  $ killall xchat

使用圖形化的方式來消滅進(jìn)程

 $xkill

會出現(xiàn)一個(gè)X形的光標(biāo),單擊需要消滅的窗口,就可以消滅這個(gè)程序。www.lirenedu.org

posted @ 2012-09-18 10:23 happem 閱讀(318) | 評論 (0)編輯 收藏

如何給用戶的文件打補(bǔ)丁

Patch的主要用途就是更新源代碼到新的版本,避免下載整個(gè)源代碼,下載一個(gè)有效的補(bǔ)丁僅僅需要下載發(fā)生變化的那些代碼行就可以了,patch的幫助文檔中羅列了眾多的用法,其實(shí)大多數(shù)的時(shí)間只要下面兩個(gè)命令參數(shù)就能滿足大家的需要。下面講解patch的用法,以Ubuntu7.10系統(tǒng)為例。

 1. 命令格式

  #patch -p1<[patchfile]

  或者

#patch -R <[patchfile]

上面兩個(gè)格式任選一條就可以了。

2.使用方法

   #patch -p1<[patchfile]

要求補(bǔ)丁文件要放到源代碼目錄下,然后在運(yùn)行這條命令。

例如:給xchat2.6.0打補(bǔ)丁, 補(bǔ)丁文件是xc260-fetext.diff。

首先選入 xchat2.6.0的目錄, 并且將xc260-fix-fetext.diff文件復(fù)制到這個(gè)目錄,然后運(yùn)行:

 #patch -p1<xc260-fix-fetext.diff

如果出現(xiàn)提示信息:patching file src/text/fe-text/fe-text.c 這說明打補(bǔ)丁成功了。

 #patch -R<[pathfile]

這個(gè)命令運(yùn)行后,還要指定被補(bǔ)丁的文件的路徑和文件名.www.lirenedu.org

posted @ 2012-09-18 10:23 happem 閱讀(398) | 評論 (0)編輯 收藏

Ubuntu系統(tǒng)下:如何快速配置網(wǎng)絡(luò)

在Ubuntu系統(tǒng)下工作,只掌握圖形化的配置工具還是不夠的,系統(tǒng)在出現(xiàn)故障的時(shí)候往往使用的是終端的操作模式,下面里仁3G培訓(xùn)講師介紹在終端下如何配置網(wǎng)絡(luò)。

臨時(shí)改變網(wǎng)絡(luò)參數(shù)

.Ifconfig:查看和配置IP地址。

$ifconfig eth0

$sudo ifconfig eth0 192.168.9.23 netmask 255.255.255.0

route:配置路由參數(shù)

$sudo route add default gw 192.168.9.1 eth0 #設(shè)置默認(rèn)網(wǎng)關(guān)

使參數(shù)立即生效

$sudo/etc/init.d/networking restart

修改網(wǎng)絡(luò)配置文件

設(shè)置DNS服務(wù)器。

$sudo echo‘nameserver=219.150.32.132>/etc/resolv.conf’

編輯/etc/network/interfaces。

$sudo vim /etc/network/interfaces

  Auto lo

  Iface lo inet loopback

 Iface eth0 inet static   #設(shè)置eth0,靜態(tài)IP

 Address 192.168.8.45

  Netmask 255.255.255.0

  Gateway 192.168.8.1

  Iface eht1inet dhcp #設(shè)置eth1為dhcp模式

可以通過下面的命令設(shè)置路由。

  Up route add default gw 192.168.8.1 eth1

  Up route add –net 192.168.8.0/24 gw 192.168.8.1 eth0

  Down route del –net 192.168.8.0/24 gw 192.168.8.1 eth0

其中,當(dāng)網(wǎng)絡(luò)接口up時(shí),執(zhí)行它后面的命令;當(dāng)網(wǎng)絡(luò)接口down時(shí),執(zhí)行它后面的命令。

使用參數(shù)立即生效。

$sudo /etc/init.d/networking restart 轉(zhuǎn):www.lirenedu.org

posted @ 2012-09-12 14:57 happem 閱讀(316) | 評論 (0)編輯 收藏

系統(tǒng)信息命令使用技巧

許多學(xué)員都使用linux來完成各種工作,包括學(xué)習(xí)、辦公、編程、網(wǎng)絡(luò)維護(hù)等,但對所使用系統(tǒng)的一些基本信息知了甚少,有的連自己顯卡的型號、CPU的具體型號、硬盤的使用情況、內(nèi)存的使用情況網(wǎng)絡(luò)的使用情況都不清楚,一旦系統(tǒng)出現(xiàn)故障,就無從下手,所以在此里仁3G嵌入式培訓(xùn)講師有必要給大家介紹如何準(zhǔn)確地獲得自己的系統(tǒng)信息。

1. 系統(tǒng)信息

查看內(nèi)核信息。 $uname -a

查看操作系統(tǒng)的版本。 $head n 1/etc/issue

查看CPU的信息。 $cat /proc/cpuinfo

查看計(jì)算機(jī)名稱。 $hostname

列出所有PCI設(shè)備信息。 $lspci tv

列出所有USB設(shè)備信息。 $lsusb tv

列出系統(tǒng)加載的模塊信息。 $lsmod

2. 系統(tǒng)資源的使用信息。

查看內(nèi)存和交換區(qū)分的使用量。 $free m

查看硬盤分區(qū)的使用情況。 $df h

查看某個(gè)目錄的大小。 $du sh<目錄>

查看內(nèi)存總量和空閑內(nèi)存量。

$grep memTotal /proc/meminfo

$grep memfree /proc/meminfo

查看系統(tǒng)運(yùn)行時(shí)間、用戶數(shù)和負(fù)載。$uptime

查看系統(tǒng)負(fù)載。$cat /proc/loadavg www.lirenedu.org

posted @ 2012-09-12 14:55 happem 閱讀(355) | 評論 (0)編輯 收藏

為什么需要構(gòu)造函數(shù)和析構(gòu)函數(shù)

 

編譯器無法預(yù)期一個(gè)程序在執(zhí)行過程中會在何時(shí)創(chuàng)建一些什么對象,而只能根據(jù)當(dāng)時(shí)的上下文要求創(chuàng)建,對象的初始化最好能夠通過運(yùn)行時(shí)執(zhí)行一個(gè)函數(shù)來完成,而且是在對象創(chuàng)建的同時(shí),這個(gè)函數(shù)就是構(gòu)造函數(shù),同樣,對象在完成其使命的時(shí)候能夠通過一個(gè)函數(shù)來銷毀,這就是析構(gòu)函數(shù)。

當(dāng)給一個(gè)對象分配好原始內(nèi)存空間的時(shí)候,這個(gè)對象就應(yīng)該算創(chuàng)建起來了。只不過它還處于一種“原始狀態(tài)”,即末初始化的,不良的狀態(tài),如果把這樣的內(nèi)存直接拿來使用,除非第一個(gè)操作是賦值,否則極有可能出錯(cuò)。例如:

   Long long1;         //局部變量

   Count<

   Char*pstr=(char*)malloc(1024);

   Cout<

因此,創(chuàng)建一個(gè)變量或動態(tài)對象時(shí)一定不要忘記初始化。 初始化就是在對象創(chuàng)建的同時(shí)使用初值直接填充對象的內(nèi)存單元,因此,不會有數(shù)據(jù)類型轉(zhuǎn)換等中間過程,也就不會產(chǎn)生臨時(shí)對象,而賦值則是在對象創(chuàng)建好后任何時(shí)候都可以調(diào)用的而且可以多次調(diào)用的函數(shù),由于它調(diào)用的是“=”運(yùn)算符,因此可能需要進(jìn)行類型轉(zhuǎn)換,即會產(chǎn)生臨時(shí)對象。

C++對象可以使用構(gòu)造函數(shù)來初始化,構(gòu)造函數(shù)是任何對象創(chuàng)建時(shí)自動調(diào)用的第一個(gè)成員函數(shù),也是為每個(gè)對象僅調(diào)用一次的成員函數(shù),所以構(gòu)造函數(shù)的作用就是:當(dāng)對象的內(nèi)存分配好后把它原始狀態(tài)變成良好的可用的狀態(tài)。

有的程序員可能認(rèn)為:雖然我沒有在構(gòu)造函數(shù)中初始化數(shù)據(jù)成員,但是我在聲明一個(gè)對象后馬上調(diào)用它的set-XXX()函數(shù)來初始化它的每一個(gè)成員,效果也是一樣的。

最好為每個(gè)類顯式地定義構(gòu)造函數(shù)和析構(gòu)函數(shù),即使它們暫時(shí)空著,尤其是當(dāng)類含有指針成員或引用成員的時(shí)候。

構(gòu)造函數(shù)的另一重要用途就是給一些可能可能存在的隱含成員如vptr創(chuàng)造一個(gè)初始化的機(jī)會,否則虛擬機(jī)將不能保證實(shí)現(xiàn),每當(dāng)此時(shí),如果程序員沒有為一個(gè)多態(tài)類顯式地定義默認(rèn)構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)或拷貝賦值函數(shù),那么編譯器會自動得生成相應(yīng)的函數(shù),它們都是public inline的,并在其中插入正確初始化或修改vptr數(shù)據(jù)成員值的代碼,而且確保基類對象和派生類對象構(gòu)造時(shí)及在它們之間拷貝時(shí)vptr能夠指向或重新指向恰當(dāng)?shù)膙table,這樣的4個(gè)函數(shù)分布叫非平凡默認(rèn)構(gòu)造函數(shù)、非平凡拷貝構(gòu)造函數(shù)、非平凡析構(gòu)函數(shù)和非平凡拷貝賦值函數(shù)。www.lirenedu.org

posted @ 2012-09-03 10:56 happem 閱讀(667) | 評論 (0)編輯 收藏

C基礎(chǔ)下的函數(shù)調(diào)用技巧

與函數(shù)堆棧使用密切相關(guān)的就是函數(shù)調(diào)用規(guī)范,即調(diào)用約定(Calling Convenion)。函數(shù)調(diào)用規(guī)范決定了函數(shù)調(diào)用的實(shí)參壓棧、退棧及堆棧釋放的方式以及函數(shù)名改編的方案,windows環(huán)境下常用的調(diào)用規(guī)范有:

1)      _cedcl:這是C++/C函數(shù)的默認(rèn)調(diào)用規(guī)范,參數(shù)從右向左傳遞壓入堆棧,由調(diào)用函數(shù)復(fù)雜堆棧的清退,因此這種方式利于傳遞個(gè)數(shù)可變的參數(shù)給被調(diào)用函數(shù)。如printf()就是這樣的函數(shù)。

2)      _stdcall:這是Win API函數(shù)使用的調(diào)用規(guī)范,參數(shù)從右向左依次傳遞并壓入堆棧,由被調(diào)用函數(shù)復(fù)雜堆棧的清退。該規(guī)范生成的函數(shù)代碼比_cdecl更小,但當(dāng)函數(shù)有可變個(gè)數(shù)的參數(shù)時(shí)會轉(zhuǎn)為_cdecl規(guī)范。在Windows中,宏WINAPI、CALLBACK都定義為_stdcall。

3)      _thiscall:是C++非靜態(tài)成員函數(shù)的默認(rèn)調(diào)用規(guī)范,不能使用個(gè)數(shù)可變的參數(shù)。當(dāng)調(diào)用非靜態(tài)成員函數(shù)的時(shí)候,this指針直接保存在ECX寄存器中而壓入函數(shù)堆棧,其他方面與_stdcall相同。

4)      _fastcall:該規(guī)范所修飾的函數(shù)的實(shí)參將被直接傳遞到CPU寄存器中而不是內(nèi)存堆棧中,堆棧清退由被調(diào)用函數(shù)負(fù)責(zé),該規(guī)范不能用于成員函數(shù)。

函數(shù)必須制定的一個(gè)調(diào)用規(guī)范,特別是在模塊之間的邏輯接口中,每個(gè)函數(shù)原型的調(diào)用規(guī)范必須與其實(shí)的調(diào)用規(guī)范保持一致,否則會出現(xiàn)編譯連接錯(cuò)誤。如果你調(diào)用了在某個(gè)DLL中實(shí)現(xiàn)的COM對象的方法,而這些方法在創(chuàng)建時(shí)卻沒顯式地制定調(diào)用規(guī)范,那么它們會使用環(huán)境默認(rèn)的調(diào)用規(guī)范,雖然你的程序可以通過編譯和連接,但是在運(yùn)行時(shí)就可能導(dǎo)致程序崩潰。

所以,凡是接口函數(shù)都必須顯式地制定其調(diào)用規(guī)范,除非接口函數(shù)是類的非靜態(tài)成員函數(shù),如果不顯式制定調(diào)用規(guī)范,類的靜態(tài)成員函數(shù)和全局函數(shù)將采用C++/C默認(rèn)的函數(shù)調(diào)用規(guī)范或者由工程設(shè)置指定的調(diào)用規(guī)范,因此最好也為靜態(tài)成員函數(shù)顯式地指定調(diào)用規(guī)范。

注意:類的靜態(tài)成員函數(shù)的默認(rèn)調(diào)用規(guī)范不是thiscall,類的友元函數(shù)的調(diào)用也不是thiscall,它們都是由函數(shù)本身指定或者由工程設(shè)定的。COM接口的方法都指定_stdcall調(diào)用規(guī)范,而我們自己開發(fā)COM對象及接口時(shí)也可以指定其他的調(diào)用規(guī)范。

 

一定要知道C基礎(chǔ)的基本概念:

 

認(rèn)識函數(shù)堆棧:http://www.lirenedu.org/index.php?ack=xinwen&id=1026

基于C語言基礎(chǔ)概念:http://www.lirenedu.org/index.php?ack=xinwen&id=1024

操作系統(tǒng)幾個(gè)基本要點(diǎn):http://www.lirenedu.org/index.php?ack=xinwen&id=1029

posted @ 2012-09-03 10:55 happem 閱讀(264) | 評論 (0)編輯 收藏

STL容器元素?cái)?shù)據(jù)滿足哪些條件

一、可默認(rèn)構(gòu)造的,也即具有publicdefault constructor,不論是用戶顯式定義還是編譯器默認(rèn)的,但是用戶定義的帶參數(shù)constructor會仰制編譯器合成default constructor,實(shí)際上并非任何情況下任意一種容器要求其元素類型滿足這一條件,特別是關(guān)聯(lián)式容器,因?yàn)橹挥行蛄惺饺萜鞯哪承┖瘮?shù)才可能明確地或隱含地使用元素類型的default constructor,如果你不調(diào)用這樣的成員函數(shù),編譯器就不需要元素類型的默認(rèn)構(gòu)造函數(shù)。

二、可拷貝構(gòu)造和拷貝賦值的,既具有publiccopy constructorcopy assignment operator,不論是編譯器默認(rèn)還是operator,如果沒有顯式定義它的話,這個(gè)條件可歸結(jié)為:元素必須是拷貝的,但實(shí)際上拷貝賦值的要求也不是強(qiáng)制的,原因和default constructor類似。

三、具有publicdestructor,不論是編譯器默認(rèn)的還是用戶顯式定義的。

四、對于關(guān)聯(lián)式容器,要求其元素必須是可比較的。

Auto_ptr滿足上述條件嗎?至少滿足前三條,因此至少可以作為序列式容器的元素,如果為auto-ptr定義了比較運(yùn)算符的話,應(yīng)該還可以把它作為關(guān)聯(lián)式容器的元素。

但是auto_ptr的特點(diǎn)是接管和轉(zhuǎn)移擁有權(quán),而不是像原始指針那樣可以共享實(shí)值對象,即auto_ptr在初始化時(shí)接管實(shí)值對象和擁有權(quán),而在拷貝時(shí)會交出實(shí)值對象及其擁有權(quán)。

因此,auto_ptr對象和它的拷貝不會共享實(shí)值它的拷貝并不相同,然而根據(jù)STL容器值語義的要求,可拷貝構(gòu)造意味著一個(gè)著把一個(gè)對象賦值給另一個(gè)同類型對象將產(chǎn)生兩個(gè)相同的對象,顯然,auto_ptr不能滿足這一要求,與上面結(jié)論矛盾!那么問題出在哪里呢?

在揭開auto_ptr的之前需要了解copy constructorcopy assignment operator,的幾種合法形式,任何一個(gè)類都允許兩種形式的copy constructor

  C(const C©);

  C);

同樣,copy assignment operator允許類似的兩種形式。

 C& operator=const C ©);

 C& operator=C & copy);

實(shí)際上,由于copy assignment operator為普通的運(yùn)算符重載成員函數(shù),因此還可以定義下列形式賦值函數(shù);

 C&operator=C copy);

如果要防止用戶把一些不合適的對象放入容器中,就要求對象的設(shè)計(jì)和是實(shí)現(xiàn)者使用一些語言支持但不常用的特征,也就是說,要能夠在編譯階段就阻止這種具有潛在危險(xiǎn)性的行為,常用的方法就是迫使其違反C++靜態(tài)類型安全規(guī)則。

源處:http://www.lirenedu.org/index.php?ack=xinwen&id=1178 

posted @ 2012-08-27 14:03 happem 閱讀(726) | 評論 (0)編輯 收藏

異常處理的原理

傳統(tǒng)的錯(cuò)誤處理是用不同的數(shù)值來表示不同類型的錯(cuò)誤,其表達(dá)能力很有限,因?yàn)橐粋€(gè)數(shù)字包含的信息量太少,而C++異常處理機(jī)制將異常類型化,顯然一個(gè)類型要比一個(gè)數(shù)字包含的信息量大得多。

比如我們常用的函數(shù)fopen(),當(dāng)打開文件失敗是返回NULL,按照傳統(tǒng)的錯(cuò)誤處理方法,在調(diào)用Fopen()后立即檢查其返回值,如果為NULL就進(jìn)行錯(cuò)誤處理,如果將返回NULL改為拋出異常OpenFailed,那么我們就不用在調(diào)用fopen()后馬上檢查返回值,而是在調(diào)用函數(shù)內(nèi)部或者更高層的調(diào)用者那里設(shè)置異常處理器來捕獲這個(gè)異常,C++保證:如果一個(gè)異常在拋出點(diǎn)沒有得到處理,那么它將一直拋向上層調(diào)用者,直至main()函數(shù),直到找到一個(gè)類型匹配的異常處理器,否則調(diào)用terminate()結(jié)束程序。

可以看出:異常處理機(jī)制實(shí)際上是一種運(yùn)行時(shí)通知機(jī)制。

 Class DevidedByZero{};

 Double Devidedouble a,double b

 {

Ifabs(b)::numeric_limits::epsilon()

 {

   Throw DevidedByZero()//提前檢測異常發(fā)生條件并拋出自定義異常

    Return a/b;            //這才是可能真正發(fā)出錯(cuò)誤的地方

}

Void test()

 {

 Double x=100,y=20.5

 Try{

   Cout<拋出異常DevidedByZero

}

CatchDevidedByZero&{

 Cerr<< “ Devided by zero!”<

}

}

posted @ 2012-08-23 14:39 happem 閱讀(457) | 評論 (0)編輯 收藏

C基礎(chǔ):內(nèi)存耗盡怎么辦?

 如果在申請動態(tài)內(nèi)存時(shí)找不到足夠大的連續(xù)字節(jié)內(nèi)存塊,malloc()new()會使用不同的方式宣告內(nèi)存申請失敗,通常有如下幾種方式處理“內(nèi)存耗盡”問題:

1.         判斷指針是否為NULL,如果是則立刻用return語句終止本函數(shù)。例如:

Void Func(void)

 {

     A *a=new(nothrow) A

     Ifa==NULLreturn;

     ……

}

2.         判斷指針是否為NULL,如果是則立刻用exit(1)終止整個(gè)程序的運(yùn)行,例如:

Void Funcvoid

 {

     A *a=new(nothrow) A

     Ifa==NULLexit(1)

}

3.         newmalloc()預(yù)設(shè)異常處理函數(shù),例如,Visual C++可以用_set_new_hander函數(shù)為new設(shè)置用戶自定義異常處理函數(shù),也可以讓malloc()享用與new相同的異常處理函數(shù)。

4.         捕獲new拋出的異常,并嘗試從中恢復(fù)。

 上述(1)和(2)兩種方式使用最普通。如果一個(gè)函數(shù)內(nèi)有多處需要動態(tài)申請內(nèi)存,那么方式(1)就顯得力不從心,應(yīng)該用方式(2)來處理。不過在C++中我們提倡使用方式(4)

 有一個(gè)很重要的現(xiàn)象要告訴大家:

    對于32位以上的應(yīng)用程序而言,一般情況下使用malloc()new幾乎不可能導(dǎo)致‘內(nèi)存耗盡’。我在windows98下用Visual C++編寫了測試程序:

 這個(gè)程序無休地運(yùn)行下去,根本不會終止,因?yàn)?/span>32位操作系統(tǒng)支持‘虛存’,內(nèi)存用完了,自動用硬件空間頂替。

   Void main()

{  

     Int *p=NULL;

     Unsigned int len=1024*1024;

     While1{

        P=new(nothrow) int[len]; //或者 malloc(sizeof(int)*len)

         If(!p){

           Len>>=1;                //len縮小一半

         Iflen==0

         Exit(1)

        Continue

}

 Cout<<Allocated:”<<“(len*sizeof(int))”<<bytes.<<endl;

}

}

可以得出一個(gè)結(jié)論:

   對于32位以上應(yīng)用程序,內(nèi)存耗盡錯(cuò)誤處理程序幾乎毫無用處,但是必須強(qiáng)調(diào)不加錯(cuò)誤處理將導(dǎo)致程序的質(zhì)量很差,千萬不可因小失大。

posted @ 2012-08-21 10:03 happem 閱讀(442) | 評論 (0)編輯 收藏

僅列出標(biāo)題
共2頁: 1 2 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久亚洲国产天美传媒修理工| 麻豆精品网站| 久久亚洲精选| 久久久久久久久一区二区| 欧美一区免费视频| 欧美一乱一性一交一视频| 亚洲女人小视频在线观看| 亚洲午夜免费视频| 性欧美超级视频| 久久狠狠久久综合桃花| 久久亚洲一区二区三区四区| 久久色中文字幕| 亚洲国产日韩欧美| 亚洲国产精品成人va在线观看| 最近中文字幕日韩精品| 99re6这里只有精品视频在线观看| 亚洲精品中文字幕有码专区| 亚洲在线一区| 乱码第一页成人| 国产精品扒开腿爽爽爽视频| 国产欧美一区二区色老头| 亚洲高清免费视频| 亚洲一区二区三区四区五区黄| 久久久久久久91| 亚洲欧洲精品一区二区三区 | 中日韩视频在线观看| 亚洲深夜福利在线| 久久久999精品免费| 欧美精品少妇一区二区三区| 国产精品你懂的在线| 在线精品一区| 欧美亚洲免费| 欧美激情综合色| 欧美有码在线视频| 欧美日韩亚洲国产精品| 尤物网精品视频| 亚洲午夜免费视频| 猛干欧美女孩| 欧美一级在线亚洲天堂| 欧美成人精品一区二区| 国产精品自在欧美一区| 99精品免费视频| 女仆av观看一区| 香蕉视频成人在线观看| 亚洲国产高清高潮精品美女| 夜夜爽www精品| 欧美成人午夜免费视在线看片| 香蕉视频成人在线观看 | 亚洲第一页自拍| 欧美一级理论性理论a| 亚洲国产精品成人综合色在线婷婷| 亚洲一区二区三区视频| 欧美日韩久久| 亚洲精品欧美| 欧美激情四色| 欧美大片专区| 亚洲国产毛片完整版| 久久视频这里只有精品| 午夜精品久久久久久| 国产精品视频免费观看| 亚洲综合好骚| 亚洲午夜在线视频| 国产精品免费网站在线观看| 亚洲一区欧美二区| 亚洲视频二区| 国产日韩欧美亚洲一区| 久久国产精品亚洲77777| 亚洲欧美日本在线| 国外成人在线| 女人色偷偷aa久久天堂| 美女精品在线观看| 亚洲美女色禁图| 99成人在线| 国产农村妇女精品| 久久夜色精品一区| 快播亚洲色图| 日韩视频免费观看高清在线视频 | 久久狠狠一本精品综合网| 国产精品一区二区男女羞羞无遮挡 | 欧美亚洲视频在线观看| 亚洲私人影院| 狠狠综合久久av一区二区老牛| 久久躁狠狠躁夜夜爽| 久久久精品日韩欧美| 亚洲福利小视频| 日韩视频在线免费观看| 国产精品久久久久毛片大屁完整版 | 欧美韩国在线| 欧美国产专区| 亚洲一区免费视频| 欧美在线播放视频| 亚洲激情亚洲| 一区二区三区四区五区精品| 欧美在线国产精品| 亚洲欧美另类中文字幕| 亚洲欧美综合网| 久久久久综合网| 99精品国产在热久久婷婷| 亚洲永久在线观看| 精品1区2区3区4区| 日韩午夜激情av| 国产在线播放一区二区三区 | 一本久道久久久| 国内精品久久久| 99热在线精品观看| 亚洲第一精品夜夜躁人人爽 | 欧美激情精品久久久久| 国产精品久久久久秋霞鲁丝| 欧美成人影音| 国产一在线精品一区在线观看| 亚洲日本黄色| 国语自产精品视频在线看8查询8| 亚洲国产一区二区在线| 国产伦精品一区二区三区照片91 | 久久精品国产亚洲一区二区三区| 亚洲狼人精品一区二区三区| 欧美在线日韩| 欧美一区二区三区四区在线| 欧美另类专区| 亚洲经典一区| 亚洲精品国产精品国产自| 欧美一区高清| 香蕉av777xxx色综合一区| 欧美大尺度在线| 能在线观看的日韩av| 国产欧美一区二区视频| 一区二区三区毛片| 亚洲手机视频| 国产精品v日韩精品| 亚洲久久视频| 一区二区三区欧美亚洲| 欧美精品不卡| 日韩视频在线一区二区| 亚洲另类黄色| 欧美日韩免费看| 亚洲乱码视频| 在线视频欧美一区| 欧美日韩mp4| 亚洲精品影院| 一区二区三区日韩欧美精品| 欧美精品一区二区三区蜜桃 | 久久午夜精品一区二区| 国产精品免费福利| 亚洲在线播放| 久久久999成人| 亚洲成人资源| 美女视频一区免费观看| 欧美大片免费观看| 91久久国产综合久久| 欧美二区不卡| 亚洲在线观看免费| 91久久夜色精品国产九色| 欧美一区在线视频| 久久精品麻豆| 亚洲电影中文字幕| 欧美精品在线一区二区三区| 99精品久久免费看蜜臀剧情介绍| 99视频日韩| 欧美色大人视频| 亚洲欧美日韩国产成人精品影院| 久久av免费一区| 影音先锋日韩有码| 欧美日韩1区| 亚洲欧美日本另类| 欧美高清成人| 亚洲欧美激情在线视频| 国产精品毛片大码女人| 久久福利电影| 亚洲欧洲日产国码二区| 亚洲素人一区二区| 久久精品五月婷婷| 久久电影一区| 狠狠色综合播放一区二区| 欧美有码在线观看视频| 久久手机精品视频| 亚洲国产精品小视频| 欧美a级理论片| 亚洲美女诱惑| 欧美伊久线香蕉线新在线| 亚洲国产毛片完整版| 日韩视频在线一区| 欧美日本免费| 亚洲一区久久久| 欧美亚洲系列| 亚洲第一天堂av| 欧美国产一区二区在线观看| 亚洲精品在线电影| 午夜国产精品影院在线观看| 国产日韩精品久久久| 欧美精品在线一区| 久久综合伊人| 羞羞视频在线观看欧美| 亚洲精美视频| 欧美aaa级| 久久精品国产欧美亚洲人人爽| 9人人澡人人爽人人精品| 国产资源精品在线观看| 国产精品国产三级欧美二区| 久久久久免费观看| 亚洲欧美视频在线观看视频|