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


曙海教育集團論壇開發(fā)語言培訓專區(qū)C++語言開發(fā) → C++:最強大的.NET語言之內存與資源


  共有7627人關注過本帖樹形打印

主題:C++:最強大的.NET語言之內存與資源

美女呀,離線,留言給我吧!
wangxinxin
  1樓 個性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


加好友 發(fā)短信
等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
C++:最強大的.NET語言之內存與資源  發(fā)帖心情 Post By:2010-12-10 15:10:38

IT168技術文檔】

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

    內存管理

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

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

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

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

    資源管理

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

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

    因為必須要調用一個方法來釋放資源,由此帶來的問題是,現(xiàn)在更難編寫"全無異常"的代碼了。因為異常隨時都可能發(fā)生,你不可能只是簡單地在一段代碼后,放置一個對對象的Dispose方法的調用,這樣做的話,就必須要冒資源泄漏的風險。在C#中解決這個問題的辦法是,使用try-finally塊和using語句,在面對異常時,可提供一個更可靠的辦法來調用Dispose方法。有時,構造函數(shù)也會使用這種方法,但一般的情況是,你必須要記住手工編寫它們,如果忘記了,生成的代碼可能會存在一個悄無聲息的錯誤。對缺乏真正析構函數(shù)的語言來說,是否需要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++來說,情節(jié)也非常類似,也需要使用一個try-finally語句,但其是Microsoft對C++的擴展。雖然很容易編寫一個簡單的Using模板類來包裝GCHandle,并在模板類的析構函數(shù)中調用托管對象的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)); }

支持(0中立(0反對(0單帖管理 | 引用 | 回復 回到頂部

返回版面帖子列表

C++:最強大的.NET語言之內存與資源








簽名
久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区
这里只有精品免费| 日韩av电影天堂| 精一区二区三区| 五月天亚洲综合情| 亚洲特级片在线| 国产不卡视频在线播放| 色婷婷一区二区三区四区| 中文字幕字幕中文在线中不卡视频| eeuss鲁片一区二区三区| 欧美日韩国产高清一区二区| 日韩中文字幕麻豆| 亚洲精品一卡二卡三卡四卡| 亚洲精品一二三区| 精品无码久久久久国产| 欧美激情综合五月色丁香小说| 99久久婷婷国产| 精品剧情在线观看| 国产美女精品在线| 欧美高清一级片在线| 九九热在线视频观看这里只有精品| 一本一本久久a久久精品综合麻豆| 亚洲国产精品综合小说图片区| 欧美日本韩国在线| 亚洲精品老司机| 亚洲v国产v| 亚洲成人三级小说| 中文字幕久精品免| 日本sm残虐另类| 欧美日韩在线直播| 国产一区二区视频在线| 欧洲精品一区二区三区在线观看| 日韩电影网1区2区| 欧美在线播放高清精品| 美女在线一区二区| 7777女厕盗摄久久久| 国产91色综合久久免费分享| 日韩免费视频线观看| 成人精品国产一区二区4080| 久久久久免费观看| 韩国成人av| 香蕉久久夜色精品国产使用方法 | 狠狠干一区二区| 亚洲欧美一区二区三区久本道91| 麻豆av一区二区三区久久| 亚洲精品欧美激情| 色偷偷久久一区二区三区| 六月婷婷色综合| 欧美一区二区观看视频| 91一区一区三区| 最新日韩av在线| 先锋在线资源一区二区三区| 青青草国产成人99久久| 91精品国产色综合久久久蜜香臀| 激情成人综合网| 2017欧美狠狠色| 久久久久久精| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美精品色一区二区三区| 97久久精品人人澡人人爽| 亚洲欧美日韩精品久久久久| 一本大道久久a久久精二百| 国产自产视频一区二区三区| 久久蜜桃香蕉精品一区二区三区| 久久久99爱| 美女一区二区在线观看| 久久综合色天天久久综合图片| 美女一区视频| 国产一区91精品张津瑜| 亚洲欧洲av另类| 在线观看国产一区二区| gogogo免费视频观看亚洲一| 亚洲精品乱码久久久久久黑人| 在线一区二区三区四区五区| 99久久精品情趣| 亚洲在线免费播放| 67194成人在线观看| 久久精品国产理论片免费| 蜜桃av噜噜一区| 欧美国产一区二区在线观看| 亚洲春色在线视频| 不卡的av电影| 亚洲午夜在线电影| 日韩精品在线网站| 久久婷婷人人澡人人喊人人爽| 日产精品久久久久久久性色| 精品国产三级a在线观看| 日本不卡二区高清三区| 蓝色福利精品导航| 国产精品久久久久久久久搜平片 | 日本一区二区三区视频在线播放| 国产一区二区三区久久久 | 91视频99| 麻豆国产精品官网| 国产精品动漫网站| 91精品久久久久久久91蜜桃| 久久一区二区三区av| 国产成人av资源| 亚洲成人中文在线| 国产欧美久久久精品影院| 欧美在线免费视屏| 免费亚洲精品视频| 欧美精品三级在线观看| 欧美一区2区三区4区公司二百 | 国产精品乱码一区二三区小蝌蚪| 欧美丰满一区二区免费视频| 中文字幕日韩精品一区二区| 欧美日韩一区在线视频| 国产精品免费一区二区三区| 91在线观看高清| 不卡一区在线观看| 成人免费看视频| 国产成人福利片| 国产一区在线观看麻豆| 久久精品国产色蜜蜜麻豆| 日韩福利视频网| 亚洲综合激情另类小说区| 亚洲视频免费看| 自拍偷拍亚洲欧美日韩| 国产精品午夜免费| 中文文精品字幕一区二区| 国产三级一区二区| 国产欧美一区二区精品婷婷| 精品久久人人做人人爽| 欧美成人在线直播| 精品少妇一区二区三区在线播放| 欧美一级搡bbbb搡bbbb| 日韩欧美亚洲一区二区| 日韩欧美中文字幕精品| 日韩免费性生活视频播放| 精品国产自在久精品国产| 精品欧美黑人一区二区三区| 欧美岛国在线观看| 久久久久99精品一区| 国产偷国产偷精品高清尤物| 国产日本欧洲亚洲| 国产精品人人做人人爽人人添| 国产精品美女久久久久久2018| 国产精品久久99| 一区二区在线电影| 无码av免费一区二区三区试看 | 日韩精品一区国产麻豆| 日韩视频在线永久播放| 久久女同性恋中文字幕| 国产精品欧美久久久久无广告 | 日韩三级视频中文字幕| 日韩欧美激情四射| 久久久久97国产精华液好用吗| 国产精品麻豆一区二区| 亚洲黄色免费电影| 日产精品久久久久久久性色| 国产一区日韩二区欧美三区| 丁香啪啪综合成人亚洲小说| 7777精品伊久久久大香线蕉语言| 成人情视频高清免费观看电影| 免费久久一级欧美特大黄| 影音先锋亚洲视频| 91精选在线观看| 国产欧美综合在线观看第十页| 亚洲欧洲日产国产综合网| 亚洲午夜在线电影| 国产一二三精品| 9a蜜桃久久久久久免费| 日韩精品最新在线观看| 欧美调教femdomvk| 精品少妇一区二区三区| 中文字幕一区在线| 日本不卡免费在线视频| 岛国一区二区三区| 精品中文字幕人| 91福利视频久久久久| www欧美成人18+| 一区二区三区91| 国产精品888| 国产一区二区黄色| 日本高清不卡在线观看| 欧美精品一区男女天堂| 亚洲精品大片www| 韩国欧美国产1区| 国产伦精品一区二区三区| 色网站国产精品| 久久精品一二三| 三级欧美韩日大片在线看| 国产丶欧美丶日本不卡视频| 91免费在线看| 色综合一个色综合亚洲| 久久久噜噜噜久久人人看| 一区二区三区四区在线免费观看| 精品午夜一区二区三区在线观看 | 一区二区三区精品在线观看| 韩国视频一区二区| 精品麻豆av| 欧洲av一区二区嗯嗯嗯啊| 国产亚洲一二三区| 蜜臀99久久精品久久久久久软件| 99中文字幕| 欧美亚洲一区二区在线观看| 国产精品欧美一区喷水| 精品一区二区三区蜜桃| 国产精品综合久久久久久| 欧美午夜精品理论片a级按摩|