相機和鏡頭雜談    CMOS攝像機和CCD攝像機
CMOS傳感器是一種通常比CCD傳感器低10倍感光度的傳感器。
  因為人眼能看到1Lux照度(滿月的夜晚)以下的目標,CCD傳感器通常能看到比人眼略好在0.1~3Lux,是CMOS傳感器感光度的3到10倍。
   CMOS傳感器的感光度一般在6到15Lux的範圍內,CMOS傳感器有固定比CCD傳感器高10倍的噪音,固定的圖案噪音始終停留在屏幕上好像那就是 一個圖案,因為CMOS傳感器在10Lux以下基本沒用,因此大量應用的所有攝像機都是用了CCD傳感器,CMOS傳感器一般用於非常低端的家庭安全方 面。
  有2個例外,CMOS傳感器可以做得非常大並有和CCD傳感器同樣的感光度,CMOS傳感器非常快速,比CCD傳感器要快10到100倍,因此非常適用於特殊應用如high ens DSC camera ( Cannon D-30 )或者高幀攝像機。
  CMOS傳感器可以將所有邏輯和控制環都放在同一個矽芯片塊上,可以使攝像機變得簡單並易於攜帶,因此CMOS攝像機可以做得非常小。
  CMOS攝像機儘管耗能同樣或者高於CCD攝像機,但是CMOS傳感器使用很少的圓環如CDS, TG和DSP環,所以同樣尺寸的總能量消耗比CCD攝像機減少了1/2到1/4。
   只有一個例外,敏通C系列攝像機只使用12伏特/65毫安電源,幾乎和CMOS攝像機一樣,但是具有好得多的影像質量,C系列攝像機使用 0.35um3.3伏特數字訊號處理器,因此消耗非常少的能量(54C0,54C1,54C2,54C1,54C5,54C6)。所有其它公司生產的 CCD攝像機的消耗12伏特/150到300毫安,因此比CMOS的5到12伏特和35到70毫安高出了2到4倍。
  有趣的是,儘管 CCD表示「電荷耦合器件」而CMOS表示「互補金屬氧化物半導體」,但是不論CCD或者CMOS對於圖像感應都沒有用,真正感應的傳感器稱做「圖像半導 體」,CCD和CMOS傳感器(暫且如此稱呼)實際使用的都是同一種傳感器「圖像半導體」,圖像半導體是一個P N結合半導體,能夠轉換光線的光子爆炸結 合處成為成比例數量的電子。電子的數量被計算信號的電壓,光線進入圖像半導體得越多,電子產生的也越多,從傳感器輸出的電壓也越高。
  CCD稱為「電荷耦合器件」 ,CCD實際上只是一個把從圖像半導體中出來的電子有組織地儲存起來的方法。
  CMOS稱為「互補金屬氧化物半導體」,CMOS實際上只是將晶體管放在矽塊上的技術,沒有更多的含義。傳感器被稱為CMOS傳感器只是為了區別於CCD傳感器,與傳感器處理影像的真正方法無關。
   CMOS傳感器不需要複雜的處理過程,直接將圖像半導體產生的電子轉變成電壓信號,因此就非常快。這個優點使得CMOS傳感器對於高幀攝像機非常有用, 高幀速度能達到400到2000幀/秒。這個優點對於眺望高速移動的物體非常有用,然而由於沒有高速的數字訊號處理器,所以市場上只有很少的高速攝像機並 一般價格都非常高,每個單位$3000到300,000.
電視監控系統的前端設備
電視監控系統的前端設備通常由攝 像機、手動或電動鏡頭、雲台、防護罩、監聽器、報警探測器和多功能解碼器等部件組成,它們各司其職,並通過有線、無線或光纖傳輸媒介與中心控制系統的各種 設備建立相應的聯繫(傳輸視/音頻信號及控制、報警信號)。在實際的電視監控系統中,這些前端設備不一定同時使用,但實現監控現場圖像採集的攝像機和鏡頭 是必不可少的。
  2. 1 攝像機
  攝像機是獲取監視現場圖像的前端設備,它以面陣CCD圖像傳感器為核心部件,外 加同步信號產生電路、視頻信號處理電路及電源等。近年來,新型的低成本MOS圖像傳感器有了較快速的發展,基於MOS圖像傳感器的攝像機已開始被應用於對 圖像質量要求不高的可視電話或會議電視系統中。由於MOS圖像傳感器的分辨率和低照度等到主要指標暫時還比不上CCD圖像傳感器,因此,在電視監控系統中 使用攝像機仍為CCD攝像機。
  攝像機具有黑白和彩色之分,由於黑白攝像機具有高分辨率、低照度等優點,特別是它可以在紅外光照下成 像,因此在電視監控系統中,黑白CCD攝像機仍具有較高的市場佔有率。順便指出,在各商家列出的閉路電視監控器材清單中的攝像機通常都是不帶鏡頭的(一體 化攝像機除外),因此在實際應用中,應根據監控現場的實際環境及用戶要求,為攝像機配合適的鏡頭(詳見本章第2-2節)。
  2. 1. 1 黑白CCD攝像機的主要參數
在電視監控系統中選擇攝像機,一般要看幾個主要的參數,即分辨率、最低照度和信噪比等,另外還要考慮攝像機的附帶功能及價格和今後服務等因素。以下對攝像機的幾個主要參數作一介紹。
  A、 CCD尺寸及像素數 CCD尺寸指的是CCD圖像傳感器感光面的對角線尺寸,早期的CCD尺寸比較大,為lin、2/3in和1/2in等幾種,因而近年來用於電視監控攝像機的CCD尺寸以1/3in為主流。
   像素數指的是攝像機CCD傳感器的最大像素數,有些給出了水平及垂直方向的像素數,如500H*582V,有些則組出了前兩者的乘積值,如30萬像素。 對於一定尺寸的CCD芯片,像素數越多則意味著每一像素單元的面積越小,因而由該芯片構成的攝像機的分辨率也就越高。例如,在電視監控攝像機中使用的 CCD傳感器的像素有的已達到48萬像素。
  B、分辨率 分辨率是衡量攝像機優劣的一個重要參數,它指的是當攝像機攝取等間隔排列的黑白相間條紋時,在監視器(應比攝像機的分辨率高)上能夠看到的最多線數。當超過這一線數時,屏幕上就只能看到灰濛蒙的一片而不能再辨出黑白相間的線條。
工業監視用攝像機的分辨率通常在380~460線之間,廣播級攝像機的分辨率則可達到700線左右。
   C、 低照度 低照度指的是當被攝景物的光亮度低到一定程度而使攝像機輸出的視頻信號電平低到某一規定值時的景物光亮度值。測定此參數時,還應特別註明 鏡頭的最大相對孔徑。例如,使用F1. 2的鏡頭,當被景物的光亮度值低到0. 04lx時,攝像機輸出的視頻信號幅值為最大幅值的50%,即達到 350mV(標準視頻信號最大幅起來 700mV),則稱此攝像機的最低照度為0. 04lx/F1. 2。被攝景物的光亮度值再低,攝像要輸出的視頻信 號的幅值就達不到350mV了,反映在監視器的屏幕上,將是一屏很難分辨出層次的、灰暗的圖像。
  D、信噪比及伽瑪校正係數 信噪比也 是攝像機的一個主要參數。其基本定義是信號對於噪聲的比值乘以20log,一般攝像機給出的信噪比值均是在AGC(自動增益控制)關閉時的值,因為當 AGC接通時,會對小信號進行提升,使得噪聲電平也相應提高。CCD攝像機的信噪比的典型值一般為45~55dB。測量信噪比參數時,應使用視頻雜波測量 儀直接連接於攝像機的視頻輸出端子上。
伽瑪校正係數前面提到的γ值,其典型值為γ=0. 45。現行攝像機大都採用了固定的γ值。
  2. 1. 2 黑白CCD攝像機的附帶功能
  除了上述介紹的基本參數外,各品牌的攝像機大都還有一些附帶的功能,如自動光圈接口、電子快門、自動增益控制、逆光補償、線鎖定同步及外同步等,下面簡要介紹一下。
   A、電動光圈接口   目前在市場上見到的標準CCD攝像機大都帶有驅動自動光圈鏡頭的接口,其中有些只提供一種驅動方式(通常為視頻驅動方式),也就 是說,它只能配接VD型的自動光圈鏡頭,有些則可同時提供兩種驅動方式(視頻驅動和直流驅動)供用戶選擇,因此,它可以配接任何自動光圈鏡頭。這裡,視頻 驅動(Video Driver,簡稱VD)方式是指攝像機將視頻信號電平輸出到自動光圈鏡頭的內部,再由其內部的驅動電路輸出控制電壓,使鏡頭光圈調整 電動機轉動;直流驅動(DC Driver,簡稱DD)方式則是指攝像機內部增加了鏡頭光圈電動機的驅動電路,可以直接輸出直流控制電壓到鏡頭內的光圈電 動機並使其轉動,因此,具有直流驅動接口的攝像機的成本就稍許高一些(因為增加了一部分電路),但所選配的自動光圈鏡頭則因其內部不含有驅動電路而體積稍 小一些,價格也就低一些。
  不同品牌及型號的攝像機所帶自動光圈接口的位置及形式是不完全一樣。一般攝像機的自動光圈接口設置在機身的 後面板上,但也有一些則設在機身的側面。圖2-1示出幾種不同形式的自動光圈的接口,其中陰式方四孔接口最為常見,但不同攝像機對其各針腳的定義又不完全 相同。一般視頻驅動自動光圈接口使用3個針,即電源、視頻、接地;而直流驅動自動光圈接口使用4個針,即阻尼正、阻尼負、驅動正、驅動負。若同時具有兩種 光圈驅動方式,則具體將該接口定義為VD還是DD驅動方式,須由另外的撥動開關來選擇(如JETCOM公司的JC系列攝像機),也有的由攝像機蓋板內視頻 處理板上不同的插座位置來選擇,並在出廠前設定一種方式(如NATURE的NV-434CA攝像機),還有的乾脆在攝像機機身側面及後面板上直接設定兩個 不同的自動光圈接口(如JVC的TX-S240E攝像機)。
  B、電子快門   電子快門(Electronic Shutter)是 比照照相機的機械快門功能提出一個術語,它相當於控制CCD圖像傳感器的感光時間。由於CCD感光的實質是信號電荷的積累,則感光時間越長,信號電荷的積 累時間就越長,輸出信號電流的幅值也就越大。通過調整光生信號電荷的積累時間(即調整時鐘脈衝的寬度),即可實現控制CCD感光時間的功能。
   C、自動增益控制   攝像機輸出的視頻信號必須達到電視傳輸規定的標準電平,即。為了能在不同的景物照度條件下都能輸出的標準視頻信號,必須使放大器 的增益能夠在較大的範圍內進行調節。這種增益調節通常都是通過檢測視頻信號的平均電平而自動完成的,實現此功能的電路稱為自動增益控制電路,簡稱AGC電 路。具有AGC功能的攝像機,在低照度時的靈敏度會有所提高,但此時的噪點也會比較明顯。這是由於信號和噪聲被同時放大的緣故。
  D、背光補償   背光補償(Back – light Compensation)也稱作逆光補償或逆光補正,它可以有效補償攝像機在逆光環境下拍攝時畫面主體黑暗的缺陷。
   當引入背光補償功能時,攝像機僅對整個視場的一個子區域(如從第80行 ~ 200行的中心區域)進行檢測,通過求此區域的平均信號電平來確定AGC電 路的工作點。由於子區域的平均電平很低,AGC放大器會有較高的增益,使輸出視頻信號的幅值提高,從而使監視器上的主體畫面明朗。此時的背景畫面會更加明 亮,但其與主體畫面的主觀亮度差會大大降低,整個視場的可視性得到改善。
 在實際應用中,經常聽到有用戶提出諸如某攝像機能夠「看多遠」 之類的問題,比如100m、500m甚至1km遠外的物體還能否在監視器上清晰地顯示出來。有了前面關於鏡頭的成像尺寸、焦距及視場角等概念後,這個問題 就不難解釋了,即「看多遠」問題與許多因素有關。比如說,用某定焦鏡頭可以看清100m遠處的鈔票的面值。一般來說,鏡頭焦距越長,「看」得就越遠,但同 時視場角卻變小,結果觀看的範圍變窄了。舉個簡單的例子,若用標準鏡頭剛好看清遠處某人的基本特徵(是男或是女),則換用長焦距鏡頭則可能看清其面部特徵 (是否有痣或疤),但卻無法看見該人穿的是什麼褲子和鞋(這部分已經「漲」出了畫面),而換用廣角鏡頭則只可能看到畫面中有人(連男女都分辨不出),但卻 可看清該人在整個監視場景中的所處的位置,周圍還有什麼別的人物或參照物。因此,關於「看多遠」的較為科學的說法應該是「在屏幕上成的像大小可對應於實際 觀測距離處多高或多寬的景物」。例如,用8mm鏡頭觀測10m遠處的景物,如果該處有10個人站成一排則剛好可橫向充滿整個監視器屏幕。
  E、接口
   鏡頭的安裝方式有C型安裝和CS型安裝兩種。圖2-4畫出了這兩種鏡頭的接口部位示意圖。其中上半部為CS型鏡頭,下半部為C型鏡頭。在電視監控系統中 常用的鏡頭是C型安裝鏡頭(in32牙螺紋座),這是一種國際公認的標準。這種鏡頭安裝部位的口徑是25. 4mm(in),從鏡頭安裝基準面到焦點的距 離是17. 526 mm。大多數攝像機的鏡頭接口則做成CS型,因此將C型鏡頭安裝到CS接口的攝像機時需增配一個5 mm厚的接圈,而將CS鏡頭安裝 到CS接口的攝像機時就不需接圈。
  圖2-4 C型安裝和CS型安裝鏡頭
  在實際應用中,如果誤對CS型鏡頭加裝接 圈後安裝到CS接口攝像機上,會因為鏡頭的成像面不能落到攝像機的CCD靶面上而不能得到清晰的圖像,而如果對C型鏡頭不加接圈就直接接到CS接口攝像機 上,則可能使鏡頭的後鏡面碰到CCD的靶面的保護玻璃,造成CCD攝像機的損壞,這一點在實用中需特別注意。
  2. 2. 2鏡頭的種類
  鏡頭的種類有許多種,每一種鏡頭都有其特點。根據功能與結構的不同,這些鏡頭的價格相差非常大,如電動變焦鏡頭要比普通定焦鏡頭的價格高約10倍,因此,只有正確瞭解各種鏡頭的特性,才能更加靈活地選擇鏡頭。
  A、固定光圈定焦鏡頭
  固定光圈定焦鏡頭是相對較為簡單的一種鏡頭,該鏡頭上只有一個可手動調整的對焦調整環(環上標有若干距離參考值),左右旋轉該環可使成在 CCD靶面上的像最為清晰,此時在監視器屏幕上得到圖像也最為清晰。
   由於是固定光圈鏡頭,因此在鏡頭上沒有光圈調整環,也就是說該鏡頭的光圈是不可調整的,因而進入鏡頭的光通量是不能通過簡單地改變鏡頭因素而改變,而只 能通過改變被攝現場的光照度來調整,如增減被攝現場的照明燈光等。這種鏡頭一般應用於光照度比較均勻的場合,如室內全天以燈光照明為主的場合,在其他場合 則需與帶有自動電子快門功能的CCD攝像機合用(當然,目前市面上絕大多數的CCD攝像機均帶有自動電子快門功能),通過電子快門的調整來模擬光通量的改 變。
  B、手動光圈定焦鏡頭
  手動光圈定焦鏡頭比固定光圈定焦鏡頭增加了光圈調整環,其光圈調整範圍一般可從 F1. 2或F1. 4到全關閉,能很方便地適應被攝現場的光照度,然而由於光圈的調整是通過手動人為地進行的,一旦攝像機安裝完畢,位置固定下來,再頻 繁地調整光圈就不那麼容易了,因此,這種鏡頭一般也是應用於光照度比較均勻的場合,而在其他場合則也需與帶有自動電子快門功能的CCD攝像機合用,如早晚 與中午、晴天與陰天等光照度變化比較大的場合,通過電子快門的調整來模擬光通量的改變。
  C、自動光圈定焦鏡頭
  自 動光圈定焦鏡頭在結構上有了比較大的改變,它相當於在手動光圈定焦鏡頭的光圈調整環上增加一個由齒輪齧合傳動的微型電動機,並從其驅動電路上引出3芯或4 芯線傳送給自動光圈鏡頭,至使鏡頭內的微型電動機相應做正向或反向轉動,從而高速光圈的大小。自動光圈鏡頭又分為含放大器(視頻驅動型)與不含放大器(直 流驅動型)兩種規格。
  D、手動變焦鏡頭
  顧名思義,手動變焦鏡頭的焦距是可變的,它有一個焦距調整環,可以在一定 範圍內調整鏡頭的焦距,其變比一般為2~3倍,焦距一般在3. 6~8 mm。在實際工程應用中,通過手動調節鏡頭的變焦環,可以方便地選擇監視現場的視 場角,如:可選擇對整個房間的監視或是選擇對房間內某個局部區域的監視。當對於監視現場的環境情況不十分瞭解時,採用這種鏡頭顯然是非常重要的了。
   對於大多數電視監控系統工程來說,當攝像機安裝位置固定下來後,再頻繁地手動變焦是很不方便的,因此,工程完工後,手動變焦鏡頭的焦距一般很少再去調 整,而僅僅起到定焦鏡頭的作用。因而手動變焦鏡頭一般用在要求較為嚴格而用定焦鏡頭又不易滿足要求的場合。但這種鏡頭卻受到工程人員的青睞,因為在施工調 試過程中使用這種鏡頭,通過在一定範圍的焦距調節,一般總可以找到一個可使用戶滿意的觀測範圍(不用反覆更換不同焦距的鏡頭),這一點在外地施工中尤為顯 得方便。
  E、自動光圈電動變焦鏡頭
  此種鏡頭與前述的自動光圈定焦鏡頭相比另外增加了兩個微型電動機,其中一個電動機與鏡頭的變焦環齧合,當其受控而轉動時可改變鏡頭的焦
  (Zoom);另一個電動機與鏡頭的對焦環齧合,當其受控而轉動時可完成鏡頭的對焦(Focus)。由於該鏡頭增加了兩個可遙控調整的功能,因而此種鏡頭也稱作電動兩可變鏡頭。
   自動光圈電動變焦鏡頭一般引出兩組多芯線,其中一組為自動光圈控制線,其原理和接法與前述的自動光圈定焦鏡頭的控制線完全相同;另一組為控制鏡頭變焦及 對焦的控制線,一般與雲台鏡頭控制器及解碼器相連。當操作遠程控制室內雲台鏡頭控制器及解碼器的變焦或對焦按鈕時,將會在此變焦或對焦的控制線上施加一個 或正或負的直流電壓,該電壓加在相應的微型電動機上,使鏡頭完成變焦及對焦調整功能

dascan 發表在 痞客邦 留言(0) 人氣()

來源 https://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=55371
在BCB的範例中,灰階調色盤的建立如下例:
// 定義調色盤結構
typedef struct {
    TLogPalette lpal;
    TPaletteEntry dummy[256];
} LogPal;
// 建立灰階調色盤
LogPal GrayPalette;
GrayPalette.lpal.palVersion    = 0x300;
GrayPalette.lpal.palNumEntries = 256;
for(int Index = 0; Index < 256; Index++)
{
    GrayPalette.lpal.palPalEntry[Index].peRed = (unsigned char)Index;
    GrayPalette.lpal.palPalEntry[Index].peGreen = (unsigned char)Index;
    GrayPalette.lpal.palPalEntry[Index].peBlue = (unsigned char)Index;
    GrayPalette.lpal.palPalEntry[Index].peFlags = (unsigned char)0;
}

dascan 發表在 痞客邦 留言(0) 人氣()

1.VCL組件開發的幾個主要基類TComponent、TControl、TWinControl、TGraphicControl、TCustomControl的主要功能及各類用途?  
  TComponent:因封裝了設計期的一些信息而使得可以在設計時使用,當然要在設計時使用還必須註冊到Delphi的IDE控件面板,所以TComponent是所有可以放在控件面板上的類的基類。  
  實現了IInterface,   IInterfaceComponentReference接口。  
  TControl:顧名思義,這才是真正的Delphi的"控件"。我們常說的Delphi控件應該就是從它來繼承,它是所有可視類的基類,可以在運行時看見。它封裝了幾封了所有的鼠標消息和部份界面的消息、外殼消息。  
  另外最重要的是它填充裝了所有的消息分發。  

dascan 發表在 痞客邦 留言(0) 人氣()

一般大家都知道,整數的運算比起浮點的運算來的快
問題是,這個理所當然的事情有時候不一定是對的...
整數相除就是一個例子,他的計算速度比起浮點數相除慢了許多
有人可能會想,這是CPU內核處理浮點數優化所帶來的結果嗎?
你可以換到舊款的電腦測試,其結果大致上是不變的

dascan 發表在 痞客邦 留言(0) 人氣()

一般網路上求最小外接矩形的做法如下:

1,   獲取幾何對象的最小外接矩形,並得到其面積值賦給變量AreaMin

2,   對幾何對象進行旋轉一個角度Φ,並求旋轉後的幾何對象的最小外接矩形,獲得其面積值賦給變量AreaTmp

3,   比較AreaTmpAreaMin的大小,將小面積值賦給AreaMin,此時的角度值賦給一個公共變量;

4,   循環執行第23步的過程,最終獲取一個最小的面積值以及與之相對應的旋轉角度;

5,   得到了最合適的旋轉角度β後,我們可以將旋轉後的矩形反旋轉一個β角度,這樣就可以獲得我們需要的斜矩形了。

但是這個方法計算量龐大,而且不夠精準,不適合用在工業環境下。
最近在嘗試寫方程式代數求解。
一般的線性代數課程中多少會提到,可以去翻翻書找看看,只要全部點帶入一次即為所求

dascan 發表在 痞客邦 留言(0) 人氣()

Very Happy
Row / Column Major
首先要瞭解:C 是 Row Maojr 的語言。
代碼: int A[2][3] = { {1, 2, 3}, {4, 5, 6} }; 意思是:有2個一維整數陣列,它們各有3個整數。因此,在 RAM 的某處,會有

dascan 發表在 痞客邦 留言(0) 人氣()

第二十五課:位圖初步
在這一課,我們將學習怎樣在程序中使用位圖。 更準確地說,我們要學習的是怎樣在一個窗口的客戶區中顯示位圖。 理論位圖就是存貯於電腦中的圖片。位圖文件有相當多的格式(譯者:如.BMP.JPG.GIF.PIC 等)但Windows僅支持 Windows Bitmap GraphiCS 格式,即BMP文件。 本課所指的位圖也是BMP文件。 使用位圖最簡單的方法就是把它定義在資源文件(.rc)中。 定義的方法有兩種。第一種方法是把它定義為整數宏,具體如下:
 

dascan 發表在 痞客邦 留言(0) 人氣()

引子
本文所談及的技術內容都來自於Internet的公開信息。由CKER在閒暇之際整理後,貼出來以飴網友,姑且妄稱原創。
每次在國外網站上找到精彩文章的時候,心中都會暗自嘆息為什麼在中文網站難以覓得這類文章呢?其實原因大家都明白。
時至今日,學習Windows編程的兄弟們都知道消息機制的重要性。所以理解消息機制也成了不可或缺的功課。
大家都知道,Borland的C++ Builder以及Delphi的核心是VCL。作為Win32平台上的開發工具,封裝Windows的消息機制當然也是必不可少的。

dascan 發表在 痞客邦 留言(0) 人氣()

堆(heap)和棧(stack)是C/C++編程不可避免會碰到的兩個基本概念。首先,這兩個概念都可以在講數據結構的書中找到,他們都是基本的數據結構,雖然棧更為簡單一些。在具體的C/C++編程框架中,這兩個概念並不是並行的。對底層機器代碼的研究可以揭示,棧是機器系統提供的數據結構,而堆則是C/C++函數庫提供的。具 體地說,現代計算機(串行執行機制),都直接在代碼底層支持棧的數據結構。這體現在,有專門的寄存器指向棧所在的地址,有專門的機器指令完成數據入棧出棧 的操作。這種機制的特點是效率高,支持的數據有限,一般是整數,指針,浮點數等系統直接支持的數據類型,並不直接支持其他的數據結構。因為棧的這種特點, 對棧的使用在程序中是非常頻繁的。對子程序的調用就是直接利用棧完成的。機器的call指令裡隱含了把返回地址推入棧,然後跳轉至子程序地址的操作,而子 程序中的ret指令則隱含從堆棧中彈出返回地址並跳轉之的操作。C/C++中的自動變量是直接利用棧的例子,這也就是為什麼當函數返回時,該函數的自動變 量自動失效的原因(因為堆棧恢復了調用前的狀態)。和棧不同,堆的數據結構並不是由系統(無論是機器系統還是操作系統) 支持的,而是由函數庫提供的。基本的malloc/realloc/free函數維護了一套內部的堆數據結構。當程序使用這些函數去獲得新的內存空間時, 這套函數首先試圖從內部堆中尋找可用的內存空間,如果沒有可以使用的內存空間,則試圖利用系統調用來動態增加程序數據段的內存大小,新分配得到的空間首先 被組織進內部堆中去,然後再以適當的形式返回給調用者。當程序釋放分配的內存空間時,這片內存空間被返回內部堆結構中,可能會被適當的處理(比如和其他空 閒空間合併成更大的空閒空間),以更適合下一次內存分配申請。這套複雜的分配機制實際上相當於一個內存分配的緩衝池(Cache),使用這套機制有如下若 干原因:1. 系統調用可能不支持任意大小的內存分配。有些系統的系統調用只支持固定大小及其倍數的內存請求(按頁分配);這樣的話對於大量的小內存分類來說會造成浪費。2. 系統調用申請內存可能是代價昂貴的。系統調用可能涉及用戶態和核心態的轉換。

dascan 發表在 痞客邦 留言(0) 人氣()

1.創建組件的類聲明
class PACKAGE 新類名 : public 祖先類名
{
private:
私有數據:(1) 內部私有用(2)發佈屬性的真正數據保存(3)發佈事件的數據保存

dascan 發表在 痞客邦 留言(0) 人氣()

C++ 代碼優化 
 
2002-06-04· ·龔敏敏··3322.net
  談到優化,很多人都會直接想到彙編。難道優化只能在彙編層次嗎?當然不是,C++層次一樣可以作代碼優化,其中有些常常是意想不到的。在C++層次進行優化,比在彙編層次優化具有更好的移植性,應該是優化中的首選做法。 
  確定浮點型變量和表達式是 float 型 

dascan 發表在 痞客邦 留言(0) 人氣()

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。