成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++指針說明管理

開發 后端
下面進行著重說明C++中的C++指針問題,所謂C++指針:指針一般指向一個函數或一個變量,在使用時,一個應用程序可以直接使用這個指針所儲存的內存地址。

C++語言發展到今天,依靠著C++自身的自由性,很大部分還體現在其靈活的C++指針運用上,從最初的pascal發展至今的object pascal,C++在指針的運用上,絕不遜色于C語言的指針。

對于給定的資源的擁有著,是負責釋放資源的一個對象或者是一段代碼。所有權分立為兩種級別--自動的和顯式的(automatic and explicit),如果一個對象的釋放是由語言本身的機制來保證的,這個對象的就是被自動地所有。

例如,一個嵌入在其他對象中的對象,他的清除需要其他對象來在清除的時候保證。外面的對象被看作嵌入類的所有者。類似地,每個在棧上創建的對象(作為自動變量)的釋放(破壞)是在控制流離開了對象被定義的作用域的時候保證的。

這種情況下,作用于被看作是對象的所有者。注意所有的自動所有權都是和語言的其他機制相容的,包括異常。無論是如何退出作用域的--正常流程控制退出、一個break語句、一個return、一個goto、或者是一個throw--自動資源都可以被清除。

到目前為止,一切都很好!問題是在引入指針、句柄和抽象的時候產生的。如果通過一個C++指針訪問一個對象的話,比如對象在堆中分配,C++不自動地關注它的釋放。程序員必須明確的用適當的程序方法來釋放這些資源。比如說。#t#

如果一個對象是通過調用new來創建的,它需要用delete來回收。一個文件是用CreateFile(Win32 API)打開的,它需要用CloseHandle來關閉。

用EnterCritialSection進入的臨界區(Critical Section)需要LeaveCriticalSection退出,等等。一個"裸"C++指針,文件句柄,或者臨界區狀態沒有所有者來確保它們的最終釋放。基本的資源管理的前提就是確保每個資源都有他們的所有者。

一個C++指針,一個句柄,一個臨界區狀態只有在我們將它們封裝入對象的時候才會擁有所有者。這就是我們的第一規則:在構造函數中分配資源,在析構函數中釋放資源。當你按照規則將所有資源封裝的時候,你可以保證你的程序中沒有任何的資源泄露。這點在當封裝對象(Encapsulating Object)在棧中建立或者嵌入在其他的對象中的時候非常明顯。但是對那些動態申請的對象呢?

不要急!任何動態申請的東西都被看作一種資源,并且要按照上面提到的方法進行封裝。這一對象封裝對象的鏈不得不在某個地方終止。它最終終止在最高級的所有者,自動的或者是靜態的。這些分別是對離開作用域或者程序時釋放資源的保證。

下面是資源封裝的一個經典例子。在一個多線程的應用程序中,線程之間共享對象的問題是通過用這樣一個對象聯系臨界區來解決的。每一個需要訪問共享資源的客戶需要獲得臨界區。例如,這可能是Win32下臨界區的實現方法

  1. class CritSect  
  2.   {  
  3.   friend class Lock;  
  4.   public:  
  5.   CritSect () { InitializeCriticalSection (&_critSection); }  
  6.   ~CritSect () { DeleteCriticalSection (&_critSection); }  
  7.   private  
  8.   void Acquire ()  
  9.   {  
  10.   EnterCriticalSection (&_critSection);  
  11.   }  
  12.   void Release ()  
  13.   {  
  14.   LeaveCriticalSection (&_critSection);  
  15.   }  
  16.   CRITICAL_SECTION _critSection;  
  17.   }; 

這里聰明的部分是我們確保每一個進入臨界區的客戶最后都可以離開。"進入"臨界區的狀態是一種資源,并應當被封裝。封裝器通常被稱作一個鎖(lock)。

責任編輯:chenqingxiang 來源: CSDN
相關推薦

2010-01-18 15:53:27

C++析構函數

2021-12-21 15:31:10

C++語言指針

2011-04-11 11:09:50

this指針

2010-01-14 17:42:47

CC++

2010-01-26 10:42:26

C++函數

2010-01-26 13:36:27

C++設計

2010-01-25 10:54:18

C++設計

2021-06-10 08:51:57

C++指針聲明指針相關概念

2010-01-28 13:57:19

C++指針基礎

2014-01-24 09:49:01

C++指針

2021-10-27 16:27:20

C++指針操控

2024-05-15 16:01:04

C++編程開發

2010-01-19 13:43:59

C++函數

2010-01-28 11:08:09

C++變量

2010-01-28 13:27:12

C++類定義

2024-12-26 10:45:08

2010-01-19 17:54:47

C++程序

2010-01-25 18:19:17

C++特性

2010-01-25 18:19:17

C++特性

2010-02-04 09:33:08

C++指針重載
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品免费小视频 | 一区二区国产精品 | 国产高清视频一区 | 人人九九精 | 国产极品91 | 亚洲精品乱码久久久久久按摩观 | 伊人一区 | 大久| 91麻豆精品国产91久久久久久久久 | 中文字幕在线视频精品 | 中文字幕av在线播放 | 欧美精品一区二区三区一线天视频 | 国产精品久久久久久久久 | 久久伊| 午夜视频在线观看网站 | 水蜜桃久久夜色精品一区 | 精精国产xxxx视频在线 | 色久在线 | 午夜电影福利 | 91天堂网 | 午夜视频在线播放 | 欧美电影在线观看网站 | 99视频在线免费观看 | 欧美成视频 | 欧美成人专区 | 久久国产精品久久国产精品 | 97超碰在线播放 | 人人看人人草 | 国产欧美一区二区在线观看 | 四季久久免费一区二区三区四区 | 天天舔天天 | 国产一区二区三区视频 | 国产欧美精品区一区二区三区 | 在线播放亚洲 | 久久综合入口 | 国产成人综合一区二区三区 | 欧美伊人影院 | 久久国内| 欧美成人一区二免费视频软件 | 影音先锋中文字幕在线观看 | 亚洲美女天堂网 |