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

Rss & SiteMap

曙海教育集團論壇 http://www.bjzhda.cn

曙海教育集團論壇
共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
[瀏覽完整版]

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

1樓
wangxinxin 發表于:2010-12-10 15:10:38

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)); }
共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

Copyright © 2000 - 2009 曙海教育集團
Powered By 曙海教育集團 Version 2.2
Processed in .03125 s, 2 queries.
久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区
日韩欧美三级在线| 日韩精品伦理第一区| 午夜精品在线看| 亚洲国产精品天堂| 日韩精品三区四区| 国产精品18久久久久久vr| 成人教育av在线| 国产精品久久久对白| 丝袜美腿玉足3d专区一区| 在线观看网站黄不卡| 精品国产露脸精彩对白| 亚洲色图欧美在线| 免费日本视频一区| av在线免费不卡| 欧美一区免费视频| 欧美三区在线视频| 国产偷v国产偷v亚洲高清| 一区二区三区在线观看国产| 三级在线观看一区二区| 国产成人免费在线观看不卡| 91视频在线看| 久久精品久久精品国产大片| 正在播放精油久久| 欧美zozo另类异族| 蜜桃视频在线观看一区二区| 91社区在线播放| 欧美亚一区二区| 亚洲男女毛片无遮挡| 国产91精品欧美| 色综合激情五月| 国产一区二区三区综合| 福利电影一区二区三区| 国产精品99久久久久久似苏梦涵| 2021中文字幕一区亚洲| 国产女人18毛片水真多成人如厕| 蜜臀av在线播放一区二区三区| 久草热久草热线频97精品| 日韩精品中文字幕在线一区| 国产精品中文字幕欧美| 免费看日韩a级影片| 一本一本久久a久久精品综合麻豆| 日韩一区二区在线看| 日韩在线a电影| 精品国产电影| 欧美变态tickling挠脚心| 免费av网站大全久久| 鲁丝一区鲁丝二区鲁丝三区| 欧美精品一区二区三区在线| 麻豆国产精品官网| 涩涩涩999| 综合激情成人伊人| 91手机在线观看| 精品国产伦一区二区三区免费| 美国欧美日韩国产在线播放| 欧美无人高清视频在线观看| 2020日本不卡一区二区视频| 亚洲综合成人在线| 国产综合色产在线精品| 成人欧美一区二区三区在线观看| 曰韩不卡视频| 久久精品欧美一区二区三区不卡| 亚洲综合色自拍一区| 国产黑丝在线一区二区三区| 精品一区久久久| 欧美另类z0zxhd电影| 久久亚洲春色中文字幕久久久| 日韩精品久久理论片| 91久色国产| 最新国产精品久久| 亚洲国产精品av| 国产一区二区三区最好精华液| 国产精品久久久久久久久婷婷| 致1999电视剧免费观看策驰影院| 亚洲精品一线二线三线| 视频在线观看91| av成人免费观看| 欧美日韩国产综合草草| 日韩美女啊v在线免费观看| 国产一区视频在线看| 欧美高清性xxxxhd | 欧洲一区二区日韩在线视频观看免费 | 成人av蜜桃| 欧美自拍偷拍午夜视频| 中文字幕五月欧美| 波多野结衣在线aⅴ中文字幕不卡| 色综合天天综合网国产成人综合天| 久久久久久夜精品精品免费| 麻豆国产精品视频| 日产中文字幕在线精品一区| 欧美经典一区二区| 成人激情动漫在线观看| 欧美精品一二三区| 日韩成人免费看| 日韩亚洲视频| 亚洲少妇30p| 99porn视频在线| 欧美一卡2卡3卡4卡| 午夜av一区二区三区| 久久国产主播精品| 中文欧美字幕免费| 国内久久婷婷综合| 五月天久久综合网| 亚洲一区二区欧美日韩| 精品蜜桃传媒| 亚洲国产精品高清| 2020国产精品久久精品不卡| 日韩欧美一二三| 国产电影一区在线| 欧美精品在线视频| 精品一二三四在线| 色婷婷综合在线| 国产日韩精品一区二区浪潮av | 亚洲另类在线制服丝袜| 国产精品久久久久免费| 国产丝袜欧美中文另类| 99久久婷婷国产| 欧美不卡视频一区| 99久久久无码国产精品| 日韩精品中文字幕在线不卡尤物 | http;//www.99re视频| 欧美激情一区二区三区四区| www.成人av.com| 国产欧美一区二区在线观看| 91在线观看污| 国产欧美日本一区二区三区| 97人摸人人澡人人人超一碰| 在线91免费看| 国产在线播放一区| 久久久国产午夜精品| 99porn视频在线| 中文字幕免费在线观看视频一区| 国产精品区二区三区日本| 国产精品盗摄一区二区三区| 久久久久久国产精品mv| 亚洲精品成人在线| 一区二区三区精品国产| 伦理电影国产精品| 91精品国产aⅴ一区二区| 99re热视频精品| 亚洲三级在线看| 综合久久国产| 丁香六月久久综合狠狠色| 久久久影院官网| 久久精品日韩精品| 亚洲人一二三区| 视频一区亚洲| 国产在线精品一区二区夜色| 日韩欧美国产一区二区在线播放| 69174成人网| 一区二区三区免费看视频| 一本色道久久综合狠狠躁的推荐| 久久er精品视频| www久久精品| 区一区二区三区中文字幕| 免费成人av资源网| 精品少妇一区二区三区在线播放| 北条麻妃高清一区| 亚洲成人动漫一区| 制服丝袜中文字幕一区| 国产福利一区二区三区在线观看| 一区二区三区国产精华| 欧美三级电影精品| 91香蕉视频污| 亚洲国产日产av| 欧美日韩一区二区欧美激情| 成人永久免费| 青青青伊人色综合久久| 精品久久久久一区| 日本一区二区三区www| 国产成人三级在线观看| 国产精品不卡一区二区三区| 色拍拍在线精品视频8848| 91精品国产91久久久久青草| 亚洲成人av福利| 亚洲精品在线免费观看视频| 色狠狠久久av五月综合|| 久久av老司机精品网站导航| 一区二区免费在线视频| 91网免费观看| 狠狠色伊人亚洲综合成人| 最好看的中文字幕久久| 欧美一区二区成人6969| 亚洲巨乳在线观看| julia一区二区中文久久94| 蜜桃av一区二区在线观看| 国产精品久久久久久妇女6080 | 色播五月激情综合网| 风间由美一区二区三区| 久久精品av麻豆的观看方式| 国产精品国产三级国产有无不卡 | 亚洲日本va在线观看| 在线播放中文字幕一区| 欧美极品jizzhd欧美| 成人综合在线网站| 日本网站在线观看一区二区三区| 日本一区二区综合亚洲| 欧美日韩国产高清一区二区| 国产精品一区二区x88av| 性做久久久久久久免费看| 国产精品福利影院|