關於智慧指標的問題auto ptr c

2022-03-09 11:33:51 字數 1582 閱讀 2934

1樓:匿名使用者

智慧指標的最主要的作用防止裸指標帶來的很多問題,如指向無效記憶體的指標,或者可能出現的記憶體洩露。

其實我不建議你看這個auto_ptr,因為在實際開發中,很少使用這個,而是使用boost庫的shared_ptr,比auto_ptr更好用,更安全。如果你學會了shared_ptr,自然也會用auto_ptr了。並且vs2010裡已經提供了與boost庫一樣的shared_ptr。

你想知道智慧指標的作用,我給你舉一個反例:

class a

~a()

}如果出現下面的**

a a1;//物件a1

。。。。。。

a a2 = a1;//現在a2和a1相同了,也就意味著a2.ptr 與a1.ptr相同。

。。。。。。

那麼當a1被析構的時候,就會delete掉ptr指向的記憶體,可是目前這個指標還儲存在a2裡,意味著a2中的ptr指向無效的記憶體了,如果a2繼續使用ptr,程式基本就會崩潰了,因為有效的記憶體已被a1析構了。

解決辦法就是把上面的裸指標換成智慧指標,這就是智慧指標可以解決的問題之一。

2樓:

看一下,講的還是比較詳細的

3樓:來自梅花山魅力無限的重瓣梅

工作一年了,從來沒用到過

在vs中能用智慧指標auto_ptr嗎?為什麼我用了後編譯一直錯誤。。。求大神

4樓:

建議你看看《c++ primer》這本書,我有電子版,可以將你的郵箱給我,我發給你。

以下內容時從8.4.2節擷取的:

auto_ptr 是c++標準庫提供的類别範本它可以幫助程式設計師自動管理用new 表示式動態分

配的單個物件不幸的是對用new 表示式分配的陣列管理沒有類似的支援我們不能用

auto_ptr 儲存陣列如果這樣做了結果將是未定義的

auto_ptr 物件被初始化為指向由new 表示式建立的動態分配物件當auto_ptr 物件的生

命期結束時動態分配的物件被自動釋放

在使用anto_ptr 類别範本之前必須包含下面的標頭檔案

#include

auto_ptr 物件的定義有下列三種形式

auto_ptr< type_pointed_to > identifier( ptr_allocated_by_new );

auto_ptr< type_pointed_to > identifier( auto_ptr_of_same_type );

auto_ptr< type_pointed_to > identifier;

type_pointed_to 代表由new 表示式建立的物件的型別我們來依次看一下這些定義在

最常見的情況下我們希望把auto_ptr 直接初始化為new 表示式返回的物件地址我們可以

這樣做auto_ptr< int > pi( new int( 1024 ) );

5樓:匿名使用者

using namespace std

CPU的效能指標,cpu的效能指標有哪些?

cpu,即 處理器。cpu的效能大致上反映出了它所配置的那部微機的效能,因此cpu的效能指標十分重要。cpu效能主要取決於其主頻和工作效率。cpu的頻率是指其工作頻率,分為主頻 外頻和倍頻。主頻其實就是cpu核心工作時的時脈頻率。cpu的主頻所表示的是cpu內數字脈衝訊號振盪的速度。外頻是系統匯流排...

cpu的主要效能指標,CPU的主要效能指標

主頻,倍頻,超頻效能,快取記憶體,cpu的英文全稱是central processing unit,即 處理器。cpu從雛形出現到發展壯大的今天,由於製造技術的越來越先進,其整合度越來越高,內部的電晶體數達到幾百萬個。雖然從最初的cpu發展到現在其電晶體數增加了幾十倍,但是cpu的內部結構仍然可分為...

關於指標問題

好好看書阿 朋友,你這完全沒有學過c語言阿 還是生瓜蛋子,不要心急,循序漸進,c可以直接操縱記憶體地址,這是其他語言不具有的特性,指標就是地址,定義指標是變數名前面加 如你的int a,而在使用時,a引用地址,a引用地址的內容。c語言中 任何識別符號定義的方式和他引用的方式一致,這是我看 c tra...