自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++中的C++堆棧淺析

開發(fā) 后端
計(jì)算機(jī)領(lǐng)域,堆棧是一個(gè)不容忽視的概念,但是很多人甚至是計(jì)算機(jī)專業(yè)的人也沒有明確C++堆棧其實(shí)是兩種數(shù)據(jù)結(jié)構(gòu)。

想要學(xué)好C++的C++堆棧,那么就要了解什么是C++堆棧,所為C++堆棧就是一種數(shù)據(jù)項(xiàng)按序排列的數(shù)據(jù)結(jié)構(gòu),只能在一端(稱為棧頂(top))對數(shù)據(jù)項(xiàng)進(jìn)行插入和刪除,分為堆和棧兩部分。

C++中,內(nèi)存分成5個(gè)區(qū),他們分別是堆、棧、自由存儲區(qū)、全局/靜態(tài)存儲區(qū)和常量存儲區(qū)。棧,就是那些由編譯器在需要的時(shí)候分配,在不需要的時(shí)候自動(dòng)清楚的變量的存儲區(qū)。里面的變量通常是局部變量、函數(shù)參數(shù)等。

堆,就是那些由new分配的內(nèi)存塊,他們的釋放編譯器不去管,由我們的應(yīng)用程序去控制,一般一個(gè)new就要對應(yīng)一個(gè)delete。如果程序員沒有釋放掉,那么在程序結(jié)束后,操作系統(tǒng)會自動(dòng)回收。自由存儲區(qū),就是那些由malloc等分配的內(nèi)存塊,他和堆是十分相似的,不過它是用free來結(jié)束自己的生命的。

全局/靜態(tài)存儲區(qū),全局變量和靜態(tài)變量被分配到同一塊內(nèi)存中,在以前的C++堆棧中,全局變量又分為初始化的和未初始化的,在C++里面沒有這個(gè)區(qū)分了,他們共同占用同一塊內(nèi)存區(qū)。常量存儲區(qū),這是一塊比較特殊的存儲區(qū),他們里面存放的是常量,不允許修改(當(dāng)然,你要通過非正當(dāng)手段也可以修改,而且方法很多)

Windows服務(wù)被設(shè)計(jì)用于需要在后臺運(yùn)行的應(yīng)用程序以及實(shí)現(xiàn)沒有用戶交互的任務(wù)。為了學(xué)習(xí)這種控制臺應(yīng)用程序的基礎(chǔ)知識,C(不是C++)是***選擇。本文將建立并實(shí)現(xiàn)一個(gè)簡單的服務(wù)程序。

其功能是查詢系統(tǒng)中可用物理內(nèi)存數(shù)量,然后將結(jié)果寫入一個(gè)文本文件。***,你可以用所學(xué)知識編寫自己的 Windows 服務(wù)。當(dāng)初我寫***個(gè) NT 服務(wù)時(shí),我到 MSDN 上找例子。在那里我找到了一篇 Nigel Thompson 寫的文章:“Creating a Simple Win32 Service in C++”,這篇文章附帶一個(gè) C++ 例子。

雖然這篇文章很好地解釋了服務(wù)的開發(fā)過程,但是,我仍然感覺缺少我需要的重要信息。我想理解通過什么框架,調(diào)用什么函數(shù),以及何時(shí)調(diào)用,但 C++ 在這方面沒有讓我輕松多少。

面向?qū)ο蟮姆椒ü倘环奖?,但由于用類對底?Win32 函數(shù)調(diào)用進(jìn)行了封裝,它不利于學(xué)習(xí)服務(wù)程序的基本知識。這就是為什么我覺得 C 更加適合于編寫初級服務(wù)程序或者實(shí)現(xiàn)簡單后臺任務(wù)的服務(wù)。在你對服務(wù)程序有了充分透徹的理解之后,用 C++堆棧編寫才能游刃有余。

當(dāng)我離開原來的工作崗位,不得不向另一個(gè)人轉(zhuǎn)移我的知識的時(shí)候,利用我用 C 所寫的例子就非常容易解釋 NT 服務(wù)之所以然。服務(wù)是一個(gè)運(yùn)行在后臺并實(shí)現(xiàn)勿需用戶交互的任務(wù)的控制臺程序。Windows NT/2000/XP 操作系統(tǒng)提供為服務(wù)程序提供專門的支持。

人們可以用服務(wù)控制面板來配置安裝好的服務(wù)程序,也就是 Windows 2000/XP 控制面板|管理工具中的“服務(wù)”(或在“開始”|“運(yùn)行”對話框中輸入 services.msc /s——譯者注)??梢詫⒎?wù)配置成操作系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng),這樣你就不必每次再重啟系統(tǒng)后還要手動(dòng)啟動(dòng)服務(wù)。

【編輯推薦】

  1. C與C++中標(biāo)準(zhǔn)輸入實(shí)現(xiàn)方式上的一點(diǎn)區(qū)別
  2. C++編譯器如何對Const常量進(jìn)行分配存儲空間
  3. C++類庫設(shè)計(jì)的基本構(gòu)思與方法
  4. 玩轉(zhuǎn)C++語言的幾種方法
  5. 如何更好的進(jìn)行C++代碼編制
責(zé)任編輯:chenqingxiang 來源: CSDN
相關(guān)推薦

2010-01-21 09:34:57

C++語法

2010-01-20 10:19:55

C++數(shù)組

2010-01-27 17:16:52

C++構(gòu)造函數(shù)

2010-01-26 14:35:11

C++關(guān)鍵字

2021-10-19 14:04:28

C++類型數(shù)字

2011-06-08 14:42:33

C++多維數(shù)組

2010-01-21 13:48:30

C++基類

2010-01-21 14:07:14

CC++聲明

2010-01-25 16:58:15

C++程序

2010-01-21 13:33:44

C++基類

2010-01-25 10:25:19

C++變量

2010-01-28 16:31:54

C++類型

2020-08-21 13:20:36

C++If ElseLinux

2009-09-16 14:56:23

C++

2010-01-26 10:42:26

C++函數(shù)

2010-01-27 15:46:15

學(xué)習(xí)C++效率

2010-01-14 17:13:53

C++接口

2010-01-21 16:18:06

C++語言

2010-01-25 14:18:46

C++對象模型

2010-02-06 17:39:52

C++ strtok
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號