編譯器常駐內存
⑴ 請問怎樣讓我的程序開機啟動、並且常駐內存
1、設定虛擬內存
硬碟中有一個很寵大的數據交換文件,它是系統預留給虛擬內存作暫存的地方,很多應用程序都經常會使用到,所以系統需要經常對主存儲器作大量的數據存取,因此存取這個檔案的速度便構成影響計算機快慢的非常重要因素!一般Windows預設的是由系統自行管理虛擬內存,它會因應不同程序所需而自動調校交換檔的大小,但這樣的變大縮小會給系統帶來額外的負擔,令系統運作變慢!有見及此,用戶最好自定虛擬內存的最小值和最大值,避免經常變換大小。要設定虛擬內存,在「我的電腦」上按右鍵選擇「屬性」,在「高級」選項里的「效能」的對話框中,對「虛擬內存」進行設置。
3、檢查應用軟體或者驅動程序
有些程序在電腦系統啟動會時使系統變慢。如果要是否是這方面的原因,我們可以從「安全模式」啟動。因為這是原始啟動,「安全模式」運行的要比正常運行時要慢。但是,如果你用「安全模式」啟動發現電腦啟動速度比正常啟動時速度要快,那可能某個程序是導致系統啟動速度變慢的原因。
4、桌面圖標太多會惹禍
桌面上有太多圖標也會降低系統啟動速度。Windows每次啟動並顯示桌面時,都需要逐個查找桌面快捷方式的圖標並載入它們,圖標越多,所花費的時間當然就越多。同時有些殺毒軟體提供了系統啟動掃描功能,這將會耗費非常多的時間,其實如果你已經打開了殺毒軟體的實時監視功能,那麼啟動時掃描系統就顯得有些多餘,還是將這項功能禁止吧! 建議大家將不常用的桌面圖標放到一個專門的文件夾中或者乾脆刪除!
5、ADSL導致的系統啟動變慢
默認情況下Windows XP在啟動時會對網卡等網路設備進行自檢,如果發現網卡的IP地址等未配置好就會對其進行設置,這可能是導致系統啟動變慢的真正原因。這時我們可以打開「本地連接」屬性菜單,雙擊「常規」項中的「Internet協議」打開「TCP/IP屬性」菜單。將網卡的IP地址配置為一個在公網(默認的網關是192.168.1.1)中尚未使用的數值如192.168.1.X,X取介於2~255之間的值,子網掩碼設置為255.255.255.0,默認網關和DNS可取默認設置。
6、字體對速度的影響
雖然 微軟 聲稱Windows操作系統可以安裝1000~1500種字體,但實際上當你安裝的字體超過500 種時,就會出現問題,比如:字體從應用程序的字體列表中消失以及Windows的啟動速度大幅下降。在此建議最好將用不到或者不常用的字體刪除,為避免刪除後發生意外,可先進行必要的備份。
7、刪除隨機啟動程序
何謂隨機啟動程序呢?隨機啟動程序就是在開機時載入的程序。隨機啟動程序不但拖慢開機時的速度,而且更快地消耗計算機資源以及內存,一般來說,如果想刪除隨機啟動程序,可去「啟動」清單中刪除,但如果想詳細些,例如是QQ、popkiller 之類的軟體,是不能在「啟動」清單中刪除的,要去「附屬應用程序」,然後去「系統工具」,再去「系統信息」,進去後,按上方工具列的「工具」,再按「系統組態編輯程序」,進去後,在「啟動」的對話框中,就會詳細列出在啟動電腦時載入的隨機啟動程序了!XP系統你也可以在「運行」是輸入Msconfig調用「系統配置實用程序」才終止系統隨機啟動程序,2000系統需要從XP中復制msconfig程序。
8、取消背景和關閉activedesktop
不知大家有否留意到,我們平時一直擺放在桌面上漂亮的背景,其實是很浪費計算機資源的!不但如此,而且還拖慢計算機在執行應用程序時的速度!本想美化桌面,但又拖慢計算機的速度,這樣我們就需要不在使用背景了,方法是:在桌面上按滑鼠右鍵,再按內容,然後在「背景」的對話框中,選「無」,在「外觀」的對話框中,在桌面預設的青綠色,改為黑色......至於關閉activedesktop,即是叫你關閉從桌面上的web畫面,例如在桌面上按滑鼠右鍵,再按內容,然後在「背景」的對話框中,有一幅背景,名為Windows XX,那副就是web畫面了!所以如何系統配置不高就不要開啟。
10、把Windows變得更苗條
與DOS系統相比,Windows過於龐大,而且隨著你每天的操作,安裝新軟體、載入運行庫、添加新游戲等等使得它變得更加龐大,而更為重要的是變大的不僅僅是它的目錄,還有它的 注冊表 和運行庫。因為即使刪除了某個程序,可是它使用的DLL文件仍然會存在,因而隨著使用日久,Windows的啟動和退出時需要載入的DLL動態鏈接庫文件越來越大,自然系統運行速度也就越來越慢了。這時我們就需要使用一些徹底刪除DLL的程序,它們可以使Windows恢復苗條的身材。建議極品玩家們最好每隔兩個月就重新安裝一遍Windows,這很有效。
11、更改系統開機時間
雖然你已知道了如何新增和刪除一些隨機啟動程序,但你又知不知道,在開機至到進入Windows的那段時間,計算機在做著什麼呢?又或者是,執行著什麼程序呢?那些程序,必定要全部載完才開始進入Windows,你有否想過,如果可刪除一些不必要的開機時的程序,開機時的速度會否加快呢?答案是會的!想要修改,可按"開始",選"執行",然後鍵入win.ini,開啟後,可以把以下各段落的內容刪除,是刪內容,千萬不要連標題也刪除!它們包括:[compatibility]、[compatibility32]、[imecompatibility]、[compatibility95]、[molecompatibility]和[embedding]。
二、硬體篇
1、Windows系統自行關閉硬碟DMA模式
硬碟的DMA模式大家應該都知道吧,硬碟的PATA模式有DMA33、DMA66、DMA100和DMA133,最新的SATA-150都出來了!一般來說現在大多數人用的還是PATA模式的硬碟,硬碟使用DMA模式相比以前的PIO模式傳輸的速度要快2~8倍。DMA模式的起用對系統的性能起到了實質的作用。但是你知道嗎?Windows 2000、XP、2003系統有時會自行關閉硬碟的DMA模式,自動改用PIO模式運行!這就造成在使用以上系統中硬碟性能突然下降,其中最明顯的現象有:系統起動速度明顯變慢,一般來說正常Windows XP系統啟動時那個由左向右運動的滑條最多走2~4次系統就能啟動,但這一問題發生時可能會走5~8次或更多!而且在運行系統時進行硬碟操作時明顯感覺變慢,在運行一些大的軟體時CPU佔用率時常達到100%而產生停頓,玩一些大型3D游戲時畫面時有明顯停頓,出現以上問題時大家最好看看自己硬碟的DMA模式是不是被Windows 系統自行關閉了。查看自己的系統是否打開DMA模式:
a. 雙擊「管理工具」,然後雙擊「計算機管理」;
b. 單擊「系統工具」,然後單擊「設備管理器」;
c. 展開「IDE ATA/ATAPI 控制器」節點;
d. 雙擊您的「主要IDE控制器」;
2、CPU 和風扇是否正常運轉並足夠製冷
當CPU風扇轉速變慢時,CPU本身的溫度就會升高,為了保護CPU的安全,CPU就會自動降低運行頻率,從而導致計算機運行速度變慢。有兩個方法檢測CPU的溫度。你可以用「手指測法」用手指試一下處理器的溫度是否燙手,但是要注意的是採用這種方法必須先拔掉電源插頭,然後接一根接地線來防止身上帶的靜電擊穿CPU以至損壞。另一個比較科學的方法是用帶感溫器的萬用表來檢測處理器的溫度。
因為處理器的種類和型號不同,合理溫度也各不相同。但是總的來說,溫度應該低於 110 度。如果你發現處理器的測試高於這處溫度,檢查一下機箱內的風扇是否正常運轉。
3、USB和掃描儀造成的影響
由於Windows 啟動時會對各個驅動器(包括光碟機)進行檢測,因此如果光碟機中放置了光碟,也會延長電腦的啟動時間。所以如果電腦安裝了掃描儀等設備,或在啟動時已經連接了USB硬碟,那麼不妨試試先將它們斷開,看看啟動速度是不是有變化。一般來說,由於USB介面速度較慢,因此相應設備會對電腦啟動速度有較明顯的影響,應該盡量在啟動後再連接USB設備。如果沒有USB設備,那麼建議直接在BIOS設置中將USB功能關閉。
4、是否使用了磁碟壓縮
因為「磁碟壓縮」可能會使電腦性能急劇下降,造成系統速度的變慢。所以這時你應該檢測一下是否使用了「磁碟壓縮」,具體操作是在「我的電腦」上點擊滑鼠右鍵,從彈出的菜單選擇「屬性」選項,來檢查驅動器的屬性。
5、網卡造成的影響
只要設置不當,網卡也會明顯影響系統啟動速度,你的電腦如果連接在區域網內,安裝好網卡驅動程序後,默認情況下系統會自動通過DHCP來獲得IP地址,但大多數公司的區域網並沒有DHCP伺服器,因此如果用戶設置成「自動獲得IP地址」,系統在啟動時就會不斷在網路中搜索DHCP 伺服器,直到獲得IP 地址或超時,自然就影響了啟動時間,因此區域網用戶最好為自己的電腦指定固定IP地址。
6、文件夾和列印機共享
安裝了Windows XP專業版的電腦也會出現啟動非常慢的時候,有些時候系統似乎給人死機的感覺,登錄系統後,桌面也不出現,電腦就像停止反應,1分鍾後才能正常使用。這是由於使用了Bootvis.exe 程序後,其中的Mrxsmb.dll文件為電腦啟動添加了67秒的時間!
要解決這個問題,只要停止共享文件夾和列印機即可:選擇「開始→設置→網路和撥號連接」,右擊「本地連接」,選擇「屬性」,在打開的窗口中取消「此連接使用下列選定的組件」下的「 Microsoft 網路的文件和列印機共享」前的復選框,重啟電腦即可。
7、系統配件配置不當
一些用戶在組裝機器時往往忽略一些小東西,從而造成計算機整體配件搭配不當,存在著速度上的瓶頸。比如有些朋友選的CPU檔次很高,可音效卡等卻買了普通的便宜貨,其實這樣做往往是得不償失。因為這樣一來計算機在運行游戲、播放影碟時由於音效卡佔用CPU資源較高且其數據傳輸速度較慢,或者其根本無硬體解碼而需要採用軟體解碼方式,常常會引起聲音的停頓,甚至導致程序的運行斷斷續續。又如有些朋友的機器是升了級的,過去老機器上的一些部件如內存條捨不得拋棄,裝在新機器上照用,可是由於老內存的速度限制,往往使新機器必須降低速度來遷就它,從而降低了整機的性能,極大地影響了整體的運行速度。
9、斷開不用的網路驅動器
為了消除或減少 Windows 必須重新建立的網路連接數目,建議將一些不需要使用的網路驅動器斷開,也就是進入「我的電腦」,右擊已經建立映射的網路驅動器,選擇「斷開」即可。
10、缺少足夠的內存
Windows操作系統所帶來的優點之一就是多線性、多任務,系統可以利用CPU來進行分時操作,以便你同時做許多事情。但事情有利自然有弊,多任務操作也會對你的機器提出更高的要求。朋友們都知道即使是一個最常用的WORD軟體也要求最好有16MB左右的內存,而運行如3D MAX等大型軟體時,64MB的內存也不夠用。所以此時系統就會自動採用硬碟空間來虛擬主內存,用於運行程序和儲存交換文件以及各種臨時文件。由於硬碟是機械結構,而內存是電子結構,它們兩者之間的速度相差好幾個數量級,因而使用硬碟來虛擬主內存將導致程序運行的速度大幅度降低。
11、硬碟空間不足
使用Windows系統平台的缺點之一就是對文件的管理不清楚,你有時根本就不知道這個文件對系統是否有用,因而Windows目錄下的文件數目越來越多,容量也越來越龐大,加之現在的軟體都喜歡越做越大,再加上一些系統產生的臨時文件、交換文件,所有這些都會使得硬碟可用空間變小。當硬碟的可用空間小到一定程度時,就會造成系統的交換文件、臨時文件缺乏可用空間,降低了系統的運行效率。更為重要的是由於我們平時頻繁在硬碟上儲存、刪除各種軟體,使得硬碟的可用空間變得支離破碎,因此系統在存儲文件時常常沒有按連續的順序存放,這將導致系統存儲和讀取文件時頻繁移動磁頭,極大地降低了系統的運行速度。
12、硬碟分區太多也有錯
如果你的Windows 2000沒有升級到SP3或SP4,並且定義了太多的分區,那麼也會使啟動變得很漫長,甚至掛起。所以建議升級最新的SP4,同時最好不要為硬碟分太多的區。因為Windows 在啟動時必須裝載每個分區,隨著分區數量的增多,完成此操作的時間總量也會不斷增長。
三、病毒篇
如果你的計算機感染了病毒,那麼系統的運行速度會大幅度變慢。病毒入侵後,首先佔領內存這個據點,然後便以此為根據地在內存中開始漫無休止地復制自己,隨著它越來越龐大,很快就佔用了系統大量的內存,導致正常程序運行時因缺少主內存而變慢,甚至不能啟動;同時病毒程序會迫使CPU轉而執行無用的垃圾程序,使得系統始終處於忙碌狀態,從而影響了正常程序的運行,導致計算機速度變慢。下面我們就介紹幾種能使系統變慢的病毒。
1、使系統變慢的bride病毒
病毒類型:黑客程序
發作時間:隨機
傳播方式:網路
感染對象:網路
警惕程度:★★★★
病毒介紹:
此病毒可以在Windows 2000、Windows XP等操作系統環境下正常運行。運行時會自動連接www.hotmail.com網站,如果無法連接到此網站,則病毒會休眠幾分鍾,然後修改注冊表將自己加入注冊表自啟動項,病毒會釋放出四個病毒體和一個有漏洞的病毒郵件並通過郵件系統向外亂發郵件,病毒還會釋放出FUNLOVE病毒感染區域網計算機,最後病毒還會殺掉已知的幾十家反病毒軟體,使這些反病毒軟體失效。
病毒特徵
如果用戶發現計算機中有這些特徵,則很有可能中了此病毒。
·病毒運行後會自動連接www.hotmail.com網站。
·病毒會釋放出Bride.exe,Msconfig.exe,Regedit.exe三個文件到系統目錄;釋放出:Help.eml, Explorer.exe文件到桌面。
·病毒會在注冊表的HKEY_LOCAL_項中加入病毒Regedit.exe的路徑。
·病毒運行時會釋放出一個FUNLOVE病毒並將之執行,而FUNLOVE病毒會在計算機中大量繁殖,造成系統變慢,網路阻塞。
·病毒會尋找計算機中的郵件地址,然後按照地址向外大量發送標題為:<被感染的計算機機名>(例:如果用戶的計算機名為:張冬, 則病毒郵件的標題為:張冬)的病毒郵件。
·病毒還會殺掉幾十家國外著名的反病毒軟體。
用戶如果在自己的計算機中發現以上全部或部分現象,則很有可能中了Bride(Worm.bride)病毒,請用戶立刻用手中的殺毒軟體進行清除。
2、使系統變慢的阿芙倫病毒
病毒類型:蠕蟲病毒
發作時間:隨機
傳播方式:網路/文件
感染對象:網路
警惕程度:★★★★
病毒介紹:
此病毒可以在Windows 9X、Windows NT、Windows 2000、Windows XP等操作系統環境下正常運行。病毒運行時將自己復到到TEMP、SYSTEM、RECYCLED目錄下,並隨機生成文件名。該病毒運行後,會使消耗大量的系統資源,使系統明顯變慢,並且殺掉一些正在運行的反病毒軟體,建立四個線程在區域網中瘋狂傳播。
病毒特徵
如果用戶發現計算機中有這些特徵,則很有可能中了此病毒:
·病毒運行時會將自己復到到TEMP、SYSTEM、RECYCLED目錄下,文件名隨機
·病毒運行時會使系統明顯變慢
·病毒會殺掉一些正在運行的反病毒軟體
·病毒會修改注冊表的自啟動項進行自啟動
·病毒會建立四個線程在區域網中傳播
用戶如果在自己的計算機中發現以上全部或部分現象,則很有可能中了「阿芙倫(Worm.Avron)」病毒,由於此病毒沒有固定的病毒文件名,所以,最好還是選用殺毒軟體進行清除。
3、惡性蠕蟲 震盪波
病毒名稱: Worm.Sasser
中文名稱: 震盪波
病毒別名: W32/Sasser.worm [Mcafee]
病毒類型: 蠕蟲
受影響系統:WinNT/Win2000/WinXP/Win2003
病毒感染症狀:
·莫名其妙地死機或重新啟動計算機;
·系統速度極慢,cpu佔用100%;
·網路變慢;
·最重要的是,任務管理器里有一個叫"avserve.exe"的進程在運行!
破壞方式:
·利用WINDOWS平台的 Lsass 漏洞進行廣泛傳播,開啟上百個線程不停攻擊其它網上其它系統,堵塞網路。病毒的攻擊行為可讓系統不停的倒計時重啟。
·和最近出現的大部分蠕蟲病毒不同,該病毒並不通過郵件傳播,而是通過命令易受感染的機器
下載特定文件並運行,來達到感染的目的。
·文件名為:avserve.exe
解決方案:
·請升級您的操作系統,免受攻擊
·請打開個人防火牆屏蔽埠:445、5554和9996,防止名為avserve.exe的程序訪問網路
·手工解決方案:
首先,若系統為WinMe/WinXP,則請先關閉系統還原功能;
步驟一,使用進程程序管理器結束病毒進程
右鍵單擊任務欄,彈出菜單,選擇「任務管理器」,調出「Windows任務管理器」窗口。在任務管理器中,單擊「進程」標簽,在例表欄內找到病毒進程「avserve.exe」,單擊「結束進程按鈕」,點擊「是」,結束病毒進程,然後關閉「Windows任務管理器」;
步驟二,查找並刪除病毒程序
通過「我的電腦」或「資源管理器」進入 系統安裝目錄(Winnt或windows),找到文件「avser ve.exe」,將它刪除;然後進入系統目錄(Winntsystem32或windowssystem32),找 到文件"*_up.exe", 將它們刪除;
步驟三,清除病毒在注冊表裡添加的項
打開注冊表編輯器: 點擊開始——>運行, 輸入REGEDIT, 按Enter;
在左邊的面板中, 雙擊(按箭頭順序查找,找到後雙擊):
HKEY_CURRENT_
在右邊的面板中, 找到並刪除如下項目:"avserve.exe" = %SystemRoot%avserve.exe
關閉注冊表編輯器。
第二部份 系統加速
一、Windows 98
1、不要載入太多隨機啟動程序
不要在開機時載入太多不必要的隨機啟動程序。選擇「開始→程序→附件→系統工具→系統信息→系統信息對話框」,然後,選擇「工具→系統配置實用程序→啟動」,只需要internat.exe前打上鉤,其他項都可以不需要,選中後確定重起即可。
2、轉換系統文件格式
將硬碟由FAT16轉為FAT32。
3、不要輕易使用背景
不要使用ActiveDesktop,否則系統運行速度會因此減慢(右擊屏幕→尋顯示器屬性→Web標簽→將其中關於「活動桌面」和「頻道」的選項全部取消)。
4、設置虛擬內存
自己設定虛擬內存為機器內存的3倍,例如:有32M的內存就設虛擬內存為96M,且最大值和最小值都一樣(此設定可通過「控制面板→系統→性能→虛擬內存」來設置)。
5、一些優化設置
a、到控制面板中,選擇「系統→性能→ 文件系統」。將硬碟標簽的「計算機主要用途」改為網路伺服器,「預讀式優化"調到全速。
b、將「軟盤」標簽中「每次啟動就搜尋新的軟碟機」取消。
c、CD-ROM中的「追加高速緩存」調至最大,訪問方式選四倍速或更快的CD-ROM。
6、定期對系統進行整理
定期使用下列工具:磁碟掃描、磁碟清理、碎片整理、系統文件檢查器(ASD)、Dr�Watson等。
二、Windows 2000
1、升級文件系統
a、如果你所用的操作系統是win 9x與win 2000雙重啟動的話,建議文件系統格式都用FAT32格式,這樣一來可以節省硬碟空間,二來也可以9x與2000之間能實行資源共享。
提醒:要實現這樣的雙重啟動,最好是先在純DOS環境下安裝完9x在C區,再在9x中或者用win 2000啟動盤啟動在DOS環境下安裝2000在另一個區內,並且此區起碼要有800M的空間以上
b、如果閣下只使用win 2000的話,建議將文件系統格式轉化為NTFS格式,這樣一來可節省硬碟空間,二來穩定性和運轉速度更高,並且此文件系統格式有很好的糾錯性;但這樣一來,DOS和win 9x系統就不能在這文件系統格式中運行,這也是上面所說做雙啟動最好要用FAT32格式才能保證資源共享的原因。而且,某些應用程序也不能在此文件系統格式中運行,大多是DOS下的游戲類。
提醒:在win 2000下將文件系統升級為NTFS格式的方法是,點擊「開始-程序-附件」選中「命令提示符」,然後在打開的提示符窗口輸入"convert drive_letter:/fs:ntfs",其中的"drive"是你所要升級的硬碟分區符號,如C區;還需要說明的是,升級文件系統,不會破壞所升級硬碟分區里的文件,無需要備份。
· 再運行「添加-刪除程序」,就會看見多出了個「添加/刪除 Windows 組件」的選項;
b、打開「文件夾選項」,在「查看」標簽里選中「顯示所有文件和文件夾」,此時在你安裝win 2000下的區盤根目錄下會出現Autoexec.bat和Config.sys兩個文件,事實上這兩個文件裡面根本沒有任何內容,可以將它們安全刪除。
c、右擊「我的電腦」,選中「管理」,在點「服務和應用程序」下的「服務」選項,會看見win 2000上載入的各個程序組見,其中有許多是關於區域網設置或其它一些功能的,你完全可以將你不使用的程序禁用;
如:Alertr,如果你不是處於區域網中,完全可以它設置為禁用;還有Fax Service,不發傳真的設置成禁用;Print Spooler,沒有列印機的設置成制用;Uninterruptible power Supply,沒有UPS的也設置成禁用,這些載入程序你自己可以根據自己實際情況進行設置。
各個載入程序後面都有說明,以及運行狀態;選中了要禁用的程序,右擊它,選「屬性」,然後單擊停止,並將「啟動類型」設置為「手動」或者「已禁用」就行了
d、關掉調試器Dr. Watson;
運行drwtsn32,把除了「轉儲全部線程上下文」之外的全都去掉。否則一旦有程序出錯,硬碟會響很久,而且會佔用很多空間。如果你以前遇到過這種情況,請查找user.dmp文件並刪掉,可能會省掉幾十兆的空間。這是出錯程序的現場,對我們沒用。另外藍屏時出現的memory.dmp也可刪掉。可在我的電腦/屬性中關掉
⑵ 在C++中,編譯器為const常量分配內存空間嗎
在C語言中,用const定義的常量其實是值不能修改的變數,因此會給它分配存儲空間;但是在C++中,const定義的常量要具體情況具體對待:對於基本數據類型的常量,編譯器會把它放到符號表中而不分配存儲空間,而ADT/UDT的const對象則需要分配存儲空間(大對象)。還有一些情況下也需要分配存儲空間,例如強制聲明為extern的符號常量或取符號常量的地址等操作。
⑶ C++類類型在說明時編譯器會給它開辟什麼內存空間
在你的類中由於你沒有編寫你自己的默認構造函數,所以執行語句A a1,a2,a3;時編譯器會調用編譯器提供的默認構造函數來生成三個對象。此時已經分配了內存空間,這些空間位於棧上,如果你用的是new關鍵字的話,這些內存將在自由存儲空間裡面分配,也就是在堆上,在C++中,程序員在堆上申請的內存空間,要自己負責釋放。
樓上的講錯了。
類的成員函數在內存中只有一份拷貝,而數據成員是每一個對象都有一份自己單獨拷貝,並且就是靠這些屬性來區分對象。
正是由於在成員函數中隱藏了this指針,所有成員函數會自動跟蹤對象。
⑷ 編譯器編譯高級語言為低級語言的時候,給全局變數或靜態變數是如何分配內存的
對於C和C++的編譯器,全局變數和靜態變數都是在專門的數據區保存的,更具體一點,一般是在.data和.bss段保存的,具體在哪個段,編譯器會根據代碼中是否對這些變數進行了初始化來決定,如果初始化過,並且初始化的值不為0,那麼這個這個變數一般就會被放在編譯結果的.data段中,否則就是放在.bss段中。
.data段中就保存變數的符號,還保存變數的初始化值,而在.bss段中,只保存變數的符號,而不保存值,這是因為這部分的變數都將被初始化為0,這也是為什麼static聲明的變數即使沒有初始化也會是0的原因。
這些段都會在程序被執行的時候由操作系統(或鏈接器)載入到指定的內存中,便完成相應的初始化。
⑸ jsp頁面編譯後的servlet是否常駐內存
你定義的i前面有個嘆號,那個意思是這個變數是類范圍的,你可以理解成一個靜態變數。只要你的頁面不修改而導致重新編譯。這個變數是常駐內存的。
1、使用這種方式本身就不是很保險的方式 ,如果伺服器重新啟動,這個計數會丟失的。
2、關於壓力問題,在這里不算什麼,對伺服器沒有什麼影響。
3、如果真是大型網站,最好不要用這樣的方法,可以採用第三方的計數,或者保存在資料庫里。
⑹ G++ 和 C++ 編譯器編譯出的程序 運行後內存使用不同 這是為什麼
內存分配,不同的編譯器採用不同的方法,其速度,效率,內存大小都不一樣。你搜一下malloc的演算法。有一個大致的了解。
關於頭文件的問題,不同的編譯器,對標準的實現有所不同,可以理解的。
⑺ 什麼是「編譯器」
了解的C/C++編譯器如下:
GCC家族有
Cygwin
Mingw32
DJGPP
Dev-C++(Mingw32)
還有正宗的GNU GCC 2.95.5~3.0.0.4版本
MS家族有
MSC 5.0、6.0、7.0
MSQC 1.0、2.5
MSVC 1.0、4.2、6.0、7.0
Borland家族有
TC 1.0、2.0
TC++ 1.01、3.0
BC 3.0、3.1、4.0、4.5、5.0、5.02
BCB 3.0、5.0、6.0
其它有
Intel C/C++ 5.0
Watcom C/C++ 11.0、11.0c
VectorC 1.3.3
IBM VisualAge for C++
DigitalMars C/C++
KAI C/C++ 4.03f for RedHat 7.2
Lcc4.1
LCC-WIN32 2001-09-25~2002-04-28日版
Small C
CC386
Pacific C
另外還有C的解釋器
Quincy
Eic
CINT
上面提到的編譯器/解釋器,大部分我都使用過。現在固定使用VC7.0 Cygwin Mingw32 VectorC和LCC-WIN32這五種編譯器。
在GCC家族中GNU GCC是根本,其它的編譯器版本都是從它導出的。其中,Cygwin和Mingw32都是WIN32平台下的編譯器,DJGPP是DOS下的32位編譯器。大家所熟知的DEV-C++充其量只是GCC的一個外殼,它所自帶的編譯器就是Mingw32的一個版本。這些GCC的版本中,Cygwin是最大的,它與其說是一個編譯器,倒不如說是一套編程工具。它不僅有編譯器,還有其它很多的工具。其實,它就是一個UNIX系統在WIN32平台上的實現。實現了大多常用的UNIX工具,最近的版本中連Apache這樣的「工具」都集成進來的。不過,Cygwin雖然功能強大,但它卻不是很易用(和UNIX相似,熟悉UNIX的人用它可以很快上手),因為太多其它的工具分散了人們的注意力。相比之下Mingw32就要好用得多,它只有最基本的幾個編程工具(只可惜它不自帶GDB)。GCC中並不只是C/C++編譯器,其中還有很多其它的編譯器如JAVA,Fortran,ADA等。它是一個編譯器集合,不過有些編譯器只能在UNIX系統上用。MS家族的編譯器就不用說了,大家對它們都很熟悉。VC 7.0(VC.NET)是它的最新產品。Borland家族也不用說,大家也是耳熟能詳。最近它才推出了BCB 6.0。
其它的編譯器如:Intel C/C++大家一看名稱就知道是Intel的東西,它和VC6完全兼容,不過要掛在VC6下才能用。Watcom C/C++是早先編譯器四國大戰中的一員,原本是很不錯的東西,可惜戰略不對,現在已不見聲息了。倒是以它為基礎的一個OpenWatcom現在還在奮戰。VectorC是我近日才發現的一個好東東,它是個純C的編譯器。IBM的VisualAge for C++原本是IBM想用來淌C++編譯器這片渾水的東西,不過IBM的戰略改了,它就被放棄了。DigitalMars C/C++的前身的Symantec C++(它也是編譯器四國大戰中的一員),不過現在Symantec不做了,於是它的作者就把它改成了DigitalMars C/C++開放給大家使用。以上這些都是WIN32平台上的東西。KAI C/C++是個很強大的C/C++編譯器,它是個多平台的編譯器。不過現在被INTEL收購了,已經停止開發了。Lcc4.1是個純C的編譯器它是開放源代碼的。不過不怎麼好用。LCC-WIN32是一個在LCC基礎上開發的C語言的集成開發環境,很好用,而且有很詳細的資料,FREE!Pacific C是一個純DOS的C的集成開發環境,就不多說了。Small C CC386都是開放源代碼的編譯器,它們都很簡單,應用來給大家學習編譯器的。Quincy Eic CINT都是C的解釋器,是用來讓大家學習C語言的其中CINT的功能很強大,還支持一些C++的特性。
當然還有很多其它的編譯器,這里我給出的編譯器都是可以在WIN32或DOS平台上用的(除KAI外)。UNIX平台上的編譯器還是以GNU的為主,其它的我就不是很清楚了。
在以上的編譯器中,最特別的就是VectorC這個東西只支持純C。但它卻號稱是最快的編譯器,不過經過我的試驗,它的確在有些情況下強過其它編譯器很多!而且它還有個互動式的優化器,可以讓你直接看到C代碼對映的匯編代碼。Cygwin和Mingw32為一母所生,其運行效果相差不大。它們生成的代碼效率都很不錯,編譯的速度也很快,最值得一提的是它們對C++的特性的支持算是所有編譯器中最完全的,而且它們還支持C99的大部分特性。這一點很是不錯!大家對MS的VC已經很熟悉了,本不用我多說。不過在它的最新的產品VC7.0中,有很大的改進。它對C++的特性的支持比6.0有了很大的提高,是我所用的編譯器中是僅次於GCC的。而且它編譯出的程序,運行速度很快!僅有少數時候次於VectorC與GCC,其它情況都是最快的!其平均運行速度是最快的。對Borland的產品我也無需多說。它的TC2.0與BC3.1都是我最喜歡的東西。可是現在的BCB卻大不如前了,編譯的速度和VC6一樣慢!IDE還有較多的BUG。最令人想不通的是它生成的代碼的運行速度很慢,比LCC-WIN32還慢!它唯一值得一提的就是它的RAD做的比MS的好。Intel的編譯器大家可能不熟,它太貴了!還要有VC的支持,很不劃算,而且編譯速度比VC6還慢。不過它的代碼質量很不錯。DigitalMars C/C++沒有什麼亮點,編譯速度較快,代碼執行速度適中,對C++特性支持還算不錯。LCC-WIN32是個很不錯的集成開發環境,它只支持純C。它的編譯速度極快!代碼執行速度較慢。不過它的最大亮點在於它的IDE,在所有的FREE編程工具中,它的IDE是最專業的,有很強大的代碼分析,管理功能。而且它提供了大量的編程資料。
我曾對一些編譯器的代碼執行效率做過一些測試,以下是概況:
1. VectorC、VC 7.0 (極快)
2. Intel C/C++、VC 6.0、GCC (很快)
3. DigitalMars C/C++ (一般)
4. LCC-WIN32、BCB、BC5.02 (較慢)
當然,我所做的測試比較片面。不過在很大程度上已能反映其大概狀況。
⑻ C++中編譯時遇到函數的定義,編譯器做了哪些事,
程序在內存中分為四部分
代碼段 (程序代碼,比如你的函數)
靜態段 (存放靜態變數和全局變數,還有用到的字面值常量)
堆 (由程序員自己管理的內存,動態分配用的就是這部分內存) //動態分配的數組在這里
棧 (由操作系統管理,局部變數和臨時變數存在這里) //自己定義的數組在這里
現在你應該知道自己定義的普通數組在哪裡,動態分配的數組又在哪裡了吧.
調用函數時都是值傳遞,就是把變數的值復制一份給函數這時就會新分配一塊內存給函數中
接收這個值的那個變數,當函數結束時,這個變數被釋放
引用調用不是值傳遞,而是讓函數直接操作你傳遞的實參
高級一點: 引用其實也是值傳遞這種方式,只不過編譯器偷偷給你變成了指針
⑼ 駐留內存是什麼意思
你指的是軟體駐留?
一般使用軟體的時候,一些軟體的代碼里做了加速優化,會把常用的臨時文件放入內存常駐。
當你關閉軟體的時候,臨時文件依然會在內存里駐留。
這種駐留一般是沒什麼用的,但是當你使用一些需要很高內存的游戲或者軟體的時候,這些駐留就會影響流暢性。