久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区

以文本方式查看主題

-  曙海教育集團論壇  (http://www.rfoamep.cn/bbs/index.asp)
--  C++語言開發  (http://www.rfoamep.cn/bbs/list.asp?boardid=63)
----  C++:最強大的.NET語言之內存與資源  (http://www.rfoamep.cn/bbs/dispbbs.asp?boardid=63&id=2438)

--  作者:wangxinxin
--  發布時間:2010-12-10 15:10:38
--  C++:最強大的.NET語言之內存與資源

IT168技術文檔】

    當運行環境中包含垃圾回收機制時,區別開內存管理和資源管理,就非常重要了。典型地來說,垃圾回收器只對包含對象的內存之分配與釋放感興趣,它可不關心你的對象是否擁有其他的資源,如數據庫連接或核心對象的句柄。

    內存管理

    本地C++為程序員提供了超越內存管理的直接控制能力,在堆棧上分配一個對象,意味著只有在進入特定函數時,才會為對象分配內存,而當函數返回或堆棧展開時,內存被釋放。可使用操作符new來動態地為對象分配內存,此時內存分配在CRT堆中,并且需要程序員顯存地對對象指針使用操作符delete,才能釋放它。這種對內存的精確控制,也是C++可用于編寫極度高效的程序的原因之一,但如果程序員不小心,這也是內存泄漏的原因。另一方面,你不需要求助于垃圾回收器來避免內存泄漏--實際上這是CLR所采取的方法,而且是一個非常有效的方法,當然,對于垃圾回收堆,也有其他一些好處,如改進的分配效率及引用位置相關的優勢。所有這一切,都可以在C++中通過庫支持來實現,但除此之處,CLR還提供了一個單一的內存管理編程模型,其對所有的編程語言都是通用的,想一想與C++中COM自動化對象相交互和調度數據類型所需做的一切工作,就會發現其重要意義所在--橫跨數種編程語言的垃圾回收器,作用是非常巨大的。

    為了效率,CLR也保留了堆棧的概念,以便值類型可在其上分配,但CLR也提供了一個newobj中間語言指令,以在托管堆中分配一個對象,但此指令只在C#中對引用對象使用操作符new時提供。在CLR中,沒有與C++中的delete操作符對應的函數,當應用程序不再引用某對象時,分配的內存最后將由垃圾回收器回收。

    當操作符new應用于引用類型時,托管C++也會生成newobj指令,當然,對此使用delete操作符是不合法的。這確實是一個矛盾,但同時也證明了為什么用C++指針概念來表示一個引用類型不是一個好的做法。

    在內存管理方面,除了上述在對象構造一節討論過的內容,C++/CLI沒有提供任何新的東西;資源管理,才是C++/CLI的拿手好戲。

    資源管理

    CLR只有在資源管理方面,才能勝過本地C++。Bjarne Stroustrup的"資源獲取即初始化"的技術觀點,基本定義了資源類型的模式,即類的構造函數獲取資源,析構函數釋放資源。這些類型是被當作堆棧上的局部對象,或復雜類型中的成員,其析構函數自動釋放先前分配的資源。一如Stroustrup所言"對垃圾回收機制來說,C++是最好的語言,主要是因為它生成很少的垃圾。"

    也許有一點令人驚訝,CLR并沒有對資源管理提供任何顯式運行時支持,CLR不支持類似析構函數的C++概念,而是在 .NET Framework中,把資源管理這種模式,提升到一個IDisposable核心接口類型的中心位置。這種想法源自包裝資源的類型,理應實現此接口的單一Dispose方法,以便調用者在不再使用資源時,可調用該方法。不必說,C++程序員會認為這是時代的倒退,因為他們習慣于編寫那些缺省狀態下清理就是正確的代碼。

    因為必須要調用一個方法來釋放資源,由此帶來的問題是,現在更難編寫"全無異常"的代碼了。因為異常隨時都可能發生,你不可能只是簡單地在一段代碼后,放置一個對對象的Dispose方法的調用,這樣做的話,就必須要冒資源泄漏的風險。在C#中解決這個問題的辦法是,使用try-finally塊和using語句,在面對異常時,可提供一個更可靠的辦法來調用Dispose方法。有時,構造函數也會使用這種方法,但一般的情況是,你必須要記住手工編寫它們,如果忘記了,生成的代碼可能會存在一個悄無聲息的錯誤。對缺乏真正析構函數的語言來說,是否需要try-finally塊和using語句,還有待論證。

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->using (SqlConnection connection = new SqlConnection("Database=master; Integrated Security=sspi")) ...{  SqlCommand command = connection.CreateCommand();  command.CommandText = "sp_databases";  command.CommandType = CommandType.StoredProcedure;  connection.Open();  using (SqlDataReader reader = command.ExecuteReader())  ...{   while (reader.Read())   ...{    Console.WriteLine(reader.GetString(0));   }  } }

    對托管C++來說,情節也非常類似,也需要使用一個try-finally語句,但其是Microsoft對C++的擴展。雖然很容易編寫一個簡單的Using模板類來包裝GCHandle,并在模板類的析構函數中調用托管對象的Dispose方法,但托管C++中依然沒有C# using語句的對等物。 

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->Using<SqlConnection> connection(new SqlConnection(S"Database=master; Integrated Security=sspi")); SqlCommand* command = connection->CreateCommand(); command->set_CommandText(S"sp_databases"); command->set_CommandType(CommandType::StoredProcedure); connection->Open(); Using<SqlDataReader> reader(command->ExecuteReader()); while (reader->Read()) ...{  Console::WriteLine(reader->GetString(0)); }

久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区
久久久久国产免费免费| 国产精品视频免费一区二区三区| 动漫美女被爆操久久久| 日韩精品综合一本久道在线视频| 国产一区视频导航| 91精品黄色片免费大全| 国产一区福利在线| 欧美欧美欧美欧美首页| 国产精品一级在线| 日韩一区二区三区在线| 成人黄色777网| 久久综合狠狠综合久久综合88| 成人精品小蝌蚪| 国产亚洲一本大道中文在线| 成人18视频| 18欧美乱大交hd1984| 欧洲国产精品| 香蕉加勒比综合久久| 亚洲一区二区三区午夜| 九一九一国产精品| 日韩欧美一二区| 99理论电影网| 亚洲国产日韩综合久久精品| 亚洲一二区在线| 看片网站欧美日韩| 日韩欧美视频一区| 99久久久精品免费观看国产| 亚洲精品中文在线影院| 自拍偷拍亚洲色图欧美| 国产乱码精品1区2区3区| 26uuu亚洲综合色欧美| 国产亚洲二区| 亚洲成年人网站在线观看| 91国产视频在线观看| 国产91精品露脸国语对白| 国产午夜精品福利| 日韩在线第一区| 精品亚洲成a人| 精品国产a毛片| 欧美精品久久| 久久se精品一区二区| 欧美大片日本大片免费观看| 国产在线精品一区二区中文| 午夜影视日本亚洲欧洲精品| 欧美日韩国产色站一区二区三区| 不卡一卡二卡三乱码免费网站| ...av二区三区久久精品| 中文网丁香综合网| jizzjizzjizz欧美| 一区二区三区在线影院| 欧美日韩精品免费观看视频| 3d精品h动漫啪啪一区二区| 一区二区欧美视频| 在线播放国产精品二区一二区四区| 不卡视频一区二区| 日本中文字幕一区二区视频| 精品国产91洋老外米糕| 神马影院午夜我不卡| 国产不卡视频一区二区三区| 亚洲视频免费观看| 欧美日本国产一区| 久久精品成人一区二区三区蜜臀 | 亚洲精品成人三区| 国产ts人妖一区二区| 日韩伦理免费电影| 欧美精品色综合| 玛丽玛丽电影原版免费观看1977| 久久av中文字幕片| 最好看的中文字幕久久| 在线不卡中文字幕| 日本一区二区三区精品视频| www.久久精品| 婷婷一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲狠狠婷婷综合久久久| 9l国产精品久久久久麻豆| 亚洲成人av福利| 国产人成亚洲第一网站在线播放| 91国产免费看| 久久久久久高清| 成人一级黄色片| 婷婷亚洲久悠悠色悠在线播放 | 欧美日韩国产精品一区二区| 国产99久久久国产精品潘金 | 这里只有精品免费| 亚洲国产婷婷香蕉久久久久久99| 99精品欧美一区二区蜜桃免费| 日韩中文字幕区一区有砖一区| 欧美极品少妇xxxxⅹ高跟鞋| 欧美高清激情brazzers| 日日噜噜噜噜夜夜爽亚洲精品| 99免费精品视频| 精品制服美女久久| 亚洲国产日韩综合久久精品| 欧美国产综合色视频| 在线成人av影院| 色综合久久综合网欧美综合网| 精品国产一区二区三区麻豆免费观看完整版| 国产精品66部| 久久精品免费看| 亚洲一区二区三区不卡国产欧美| 国产人久久人人人人爽| 日韩欧美国产综合在线一区二区三区| 色综合天天综合| 日本一区视频在线| 国产私拍一区| 俄罗斯精品一区二区| 成人精品视频一区二区三区 | 欧美岛国在线观看| 欧美日韩和欧美的一区二区| 一本色道久久99精品综合| 欧美伦理一区二区| 国产在线精品一区二区中文| 99在线精品观看| 成人精品一区二区三区四区| 国产成人亚洲综合a∨婷婷图片| 美女一区二区在线观看| 亚洲国产一区二区三区青草影视| 亚洲乱码国产乱码精品精小说| 国产调教视频一区| 久久这里只有精品6| 欧美mv和日韩mv的网站| 日韩女优av电影在线观看| 欧美日韩一区高清| 欧美日本韩国一区二区三区视频| 欧美性受xxxx黑人xyx性爽| 色乱码一区二区三区88| 宅男噜噜99国产精品观看免费| 先锋影音亚洲资源| 亚洲永久激情精品| 色婷婷久久久久swag精品| 在线观看日韩片| 色综合天天综合网天天看片 | 蜜臀91精品一区二区三区| 国产亚洲综合色| 26uuu久久天堂性欧美| 精品国产乱码久久久久久闺蜜| 欧美变态tickling挠脚心| 精品裸体舞一区二区三区| 日韩免费一区二区| 久久蜜臀精品av| 欧美激情综合五月色丁香| 国产精品麻豆视频| 亚洲同性同志一二三专区| 亚洲精品国产精华液| 亚洲国产毛片aaaaa无费看| 午夜av一区二区| 精彩视频一区二区| 懂色av一区二区夜夜嗨| 成人污污视频在线观看| 91猫先生在线| 精品视频第一区| 天堂av一区二区| 91黄视频在线| 日韩一区二区在线观看视频| 久久综合九色欧美综合狠狠| 国产精品丝袜久久久久久app| 自拍偷在线精品自拍偷无码专区| 亚洲一区二区三区精品在线| 麻豆91精品视频| 99久免费精品视频在线观看| 黑人中文字幕一区二区三区| 日韩一区国产在线观看| 欧美色网一区二区| 久久综合九色综合久久久精品综合| 国产精品国产自产拍高清av王其 | 欧美日韩一级二级| 欧美大胆一级视频| 国产精品久久久久四虎| 亚洲国产日韩综合久久精品| 韩国女主播一区二区三区| 99久久婷婷国产精品综合| 精品一区日韩成人| 亚洲视频电影| 日韩一区二区免费在线电影| 国产精品沙发午睡系列990531| 亚洲国产综合人成综合网站| 国产一区二区三区蝌蚪| 51精品国产人成在线观看| 视频一区二区综合| 日韩精品av一区二区三区| 亚洲自拍偷拍二区| 日韩一区二区三区av| 亚洲人成伊人成综合网小说| 麻豆一区二区99久久久久| 91在线精品一区二区三区| 日本一区高清不卡| 欧美一级夜夜爽| 1区2区3区精品视频| 久久福利视频一区二区| 97在线电影| 日本高清成人免费播放| 久久久噜噜噜久噜久久综合| 亚洲电影在线播放| 成人亚洲一区二区一| 欧美视频小说| 欧美不卡123| 亚洲www啪成人一区二区麻豆| 国产91富婆露脸刺激对白| 日韩高清国产一区在线观看|