毛片网站在线看_天堂俺去俺来也www久久婷婷_日韩av免费网站_18性欧美xxxⅹ性满足_一区二区三区韩国免费中文网站 _性xx色xx综合久久久xx_999亚洲国产精

以文本方式查看主題

-  曙海教育集團論壇  (http://www.scb-ycwb.com/bbs/index.asp)
--  C++語言開發  (http://www.scb-ycwb.com/bbs/list.asp?boardid=63)
----  C++:最強大的.NET語言之內存與資源  (http://www.scb-ycwb.com/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)); }

毛片网站在线看_天堂俺去俺来也www久久婷婷_日韩av免费网站_18性欧美xxxⅹ性满足_一区二区三区韩国免费中文网站 _性xx色xx综合久久久xx_999亚洲国产精
国产精品麻豆久久久| 久久久久久久电影| 日韩一区二区三区av| 亚洲免费观看在线观看| 国产精品一区二区久久精品爱涩| 日韩久久久久久| 久草在线在线精品观看| 日韩欧美一二三| 国产精品99久久久久久有的能看| 精品国产乱码久久久久久老虎| 麻豆91精品91久久久的内涵| 欧美一区中文字幕| 久久国产精品无码网站| 日韩欧美国产一区二区在线播放 | 久久这里只有精品首页| 韩国三级在线一区| 国产精品久久久久毛片软件| 91视频精品在这里| 香蕉影视欧美成人| 久久久影院官网| 成人av电影在线网| 亚洲午夜精品网| 精品少妇一区二区三区在线视频| 久久福利资源站| 国产精品久久久久aaaa樱花| 欧美日韩国产一区二区三区地区| 免费久久99精品国产| 中文字幕亚洲区| 91麻豆精品国产91久久久久 | 日本不卡中文字幕| 国产欧美日韩精品一区| 欧美综合亚洲图片综合区| 日韩国产精品久久久| 久久久久久电影| 欧美日韩精品免费观看视频| 国产乱人伦偷精品视频不卡| 亚洲一区二区三区四区不卡| 久久久午夜精品理论片中文字幕| 欧美三级视频在线| 国产.精品.日韩.另类.中文.在线.播放 | 国产成人免费高清| 亚洲第一福利视频在线| 欧美国产一区二区在线观看| 欧美日韩精品一区视频| 成人在线一区二区三区| 免费人成网站在线观看欧美高清| 亚洲人精品一区| 久久天天做天天爱综合色| 欧美精品久久一区二区三区| 亚洲在线视频一区| 国产午夜一区二区三区| 夜夜嗨av一区二区三区| 中文字幕亚洲一区二区va在线| 97久久精品人人澡人人爽| 欧美va在线播放| 国产精品午夜电影| 午夜电影一区二区| 国产成人午夜精品5599| 在线视频一区二区免费| 欧美精品一区二区三| 一区二区三区日韩欧美精品| 日本伊人午夜精品| 成人免费va视频| 欧美一卡在线观看| 亚洲青青青在线视频| 精品综合免费视频观看| 色天天综合色天天久久| 久久夜色精品国产欧美乱极品| 一区二区三区四区精品在线视频| 国产精品自在欧美一区| 91精品国产91久久久久久最新毛片 | 国产精品色噜噜| 日本大胆欧美人术艺术动态| 色88888久久久久久影院按摩| 亚洲精品一区二区三区蜜桃下载| 午夜精品久久久久久久久久| 91亚洲精品一区二区乱码| 久久久亚洲精华液精华液精华液| 午夜成人免费电影| 日本精品视频一区二区| 中文欧美字幕免费| 国产一区久久久| 日韩欧美精品在线视频| 日韩av二区在线播放| 在线视频欧美精品| 国产精品色哟哟网站| 狠狠色狠狠色综合系列| 欧美精品久久久久久久久老牛影院| 中文一区二区完整视频在线观看| 麻豆精品视频在线观看免费| 欧美日韩视频专区在线播放| 亚洲日本中文字幕区| 成人av电影在线| 欧美精彩视频一区二区三区| 国产高清在线观看免费不卡| 精品国产乱码久久久久久闺蜜 | 久久爱www久久做| 久久综合网色—综合色88| 国内成人免费视频| 欧美mv日韩mv国产网站app| 免播放器亚洲一区| 精品少妇一区二区| 麻豆成人久久精品二区三区红 | 日韩精品专区在线影院观看| 日韩高清国产一区在线| 欧美剧在线免费观看网站| 香蕉久久一区二区不卡无毒影院 | 成人丝袜高跟foot| 亚洲免费看黄网站| 欧美色视频一区| 美女一区二区在线观看| 精品盗摄一区二区三区| 国产成人在线影院| 中文字幕五月欧美| 精品视频一区二区三区免费| 日日夜夜精品视频免费| 日韩三级免费观看| 国产精品一线二线三线精华| 国产精品青草综合久久久久99| 91丨九色丨蝌蚪丨老版| 午夜久久电影网| 精品少妇一区二区三区视频免付费| 国产一级精品在线| 亚洲三级在线免费观看| 欧美体内she精高潮| 久久不见久久见中文字幕免费| 欧美激情综合五月色丁香小说| 色女孩综合影院| 麻豆91精品视频| 日韩理论在线观看| 日韩精品专区在线| 91色乱码一区二区三区| 日本午夜精品一区二区三区电影| 久久久精品国产99久久精品芒果 | 亚洲视频精选在线| 欧美一区二区精美| av成人免费在线| 性久久久久久久久| 欧美激情一区二区三区不卡| 欧美怡红院视频| 福利一区二区在线观看| 无码av免费一区二区三区试看| 久久品道一品道久久精品| 色综合久久久久久久久久久| 久久av中文字幕片| 亚洲最快最全在线视频| 久久久影视传媒| 欧美日本一区二区在线观看| 国产精品1区2区3区在线观看| 亚洲高清免费观看| 国产精品午夜久久| 欧美精品一区二区久久久| 欧美日韩国产首页| 99精品视频在线播放观看| 美腿丝袜亚洲三区| 肉肉av福利一精品导航| 亚洲激情在线播放| 国产免费久久精品| 欧美一区二区三区免费视频| 中文幕一区二区三区久久蜜桃| 狠狠色丁香婷婷综合| 欧美色男人天堂| 亚洲日本一区二区三区| 日韩精品91亚洲二区在线观看 | 91麻豆精品久久久久蜜臀| 国产黄人亚洲片| 琪琪一区二区三区| 亚洲精品ww久久久久久p站| 国产欧美综合在线观看第十页| 欧美三级一区二区| 色婷婷激情久久| av在线不卡免费看| 粉嫩嫩av羞羞动漫久久久 | 精品国产免费一区二区三区四区 | 中文字幕中文在线不卡住| 日韩久久精品一区| 91精品在线麻豆| 欧美一区二区三区系列电影| 欧美系列一区二区| 欧美亚洲一区三区| 在线免费观看日本一区| 91免费版pro下载短视频| 91丨九色丨黑人外教| 99re这里只有精品首页| av男人天堂一区| 97se亚洲国产综合在线| 972aa.com艺术欧美| 97久久超碰国产精品| 国产免费成人在线视频| 国产v综合v亚洲欧| 成人a区在线观看| 精品亚洲成a人| 日韩av电影一区| 久久精品999| 久久99精品久久久| 国产一区二区三区精品视频| 国产精品乡下勾搭老头1| 国产一区二区精品在线观看| 国产91对白在线观看九色| 91丨九色丨蝌蚪富婆spa|