您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何淺析C++中的C++堆棧,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
想要學好C++的C++堆棧,那么就要了解什么是C++堆棧,所為C++堆棧就是一種數據項按序排列的數據結構,只能在一端(稱為棧頂(top))對數據項進行插入和刪除,分為堆和棧兩部分。
在C++中,內存分成5個區,他們分別是堆、棧、自由存儲區、全局/靜態存儲區和常量存儲區。棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變量的存儲區。里面的變量通常是局部變量、函數參數等。
堆,就是那些由new分配的內存塊,他們的釋放編譯器不去管,由我們的應用程序去控制,一般一個new就要對應一個delete。如果程序員沒有釋放掉,那么在程序結束后,操作系統會自動回收。自由存儲區,就是那些由malloc等分配的內存塊,他和堆是十分相似的,不過它是用free來結束自己的生命的。
全局/靜態存儲區,全局變量和靜態變量被分配到同一塊內存中,在以前的C++堆棧中,全局變量又分為初始化的和未初始化的,在C++里面沒有這個區分了,他們共同占用同一塊內存區。常量存儲區,這是一塊比較特殊的存儲區,他們里面存放的是常量,不允許修改(當然,你要通過非正當手段也可以修改,而且方法很多)
Windows服務被設計用于需要在后臺運行的應用程序以及實現沒有用戶交互的任務。為了學習這種控制臺應用程序的基礎知識,C(不是C++)是***選擇。本文將建立并實現一個簡單的服務程序。
其功能是查詢系統中可用物理內存數量,然后將結果寫入一個文本文件。***,你可以用所學知識編寫自己的 Windows 服務。當初我寫***個 NT 服務時,我到 MSDN 上找例子。在那里我找到了一篇 Nigel Thompson 寫的文章:“Creating a Simple Win32 Service in C++”,這篇文章附帶一個 C++ 例子。
雖然這篇文章很好地解釋了服務的開發過程,但是,我仍然感覺缺少我需要的重要信息。我想理解通過什么框架,調用什么函數,以及何時調用,但 C++ 在這方面沒有讓我輕松多少。
面向對象的方法固然方便,但由于用類對底層 Win32 函數調用進行了封裝,它不利于學習服務程序的基本知識。這就是為什么我覺得 C 更加適合于編寫初級服務程序或者實現簡單后臺任務的服務。在你對服務程序有了充分透徹的理解之后,用 C++堆棧編寫才能游刃有余。
當我離開原來的工作崗位,不得不向另一個人轉移我的知識的時候,利用我用 C 所寫的例子就非常容易解釋 NT 服務之所以然。服務是一個運行在后臺并實現勿需用戶交互的任務的控制臺程序。Windows NT/2000/XP 操作系統提供為服務程序提供專門的支持。
人們可以用服務控制面板來配置安裝好的服務程序,也就是 Windows 2000/XP 控制面板|管理工具中的“服務”(或在“開始”|“運行”對話框中輸入 services.msc /s——譯者注)。可以將服務配置成操作系統啟動時自動啟動,這樣你就不必每次再重啟系統后還要手動啟動服務。
關于如何淺析C++中的C++堆棧就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。