久久99爰这里有精品国产-久久99这里只有精品国产-久久99中文字幕-久久99中文字幕久久-国产福利免费观看-国产福利免费视频


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


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

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

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


加好友 發短信
等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
C++:最強大的.NET語言之內存與資源  發帖心情 Post By: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)); }

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

返回版面帖子列表

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








簽名
欧美日本国产| 欧美国产日韩精品| 日韩男人天堂| 国产成人欧美一区二区三区的| 成人免费观看网欧美片| 九九免费高清在线观看视频| 精品国产香蕉在线播出 | 国产亚洲精品aaa大片| 天天色成人网| 国产不卡在线观看| 欧美激情一区二区三区视频高清| 一本高清在线| 欧美日本免费| 可以在线看黄的网站| 国产高清在线精品一区a| 久久99这里只有精品国产| 国产成人女人在线视频观看| 二级片在线观看| 亚欧乱色一区二区三区| 精品久久久久久中文字幕2017| 国产精品1024永久免费视频| 成人免费观看的视频黄页| 四虎久久精品国产| 午夜在线亚洲男人午在线| 国产一区二区精品尤物| 日韩在线观看视频免费| 日韩男人天堂| 精品在线视频播放| 日日爽天天| 国产麻豆精品高清在线播放| 日韩字幕在线| 国产美女在线一区二区三区| 日韩中文字幕一区| 青青久久精品国产免费看| 四虎久久影院| 精品在线视频播放| 久久精品欧美一区二区| 美女免费精品高清毛片在线视| 久久精品欧美一区二区| 成人免费网站久久久| 国产国语在线播放视频| 黄色短视屏| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美大片一区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | a级黄色毛片免费播放视频| 国产91视频网| 国产麻豆精品hdvideoss| 一本伊大人香蕉高清在线观看| 99热热久久| 一级片片| 人人干人人插| 黄视频网站免费| 欧美大片aaaa一级毛片| 一级女性大黄生活片免费| 日韩男人天堂| 国产一区二区精品久久| 欧美日本免费| 国产不卡在线播放| 国产视频一区二区三区四区| 亚洲 男人 天堂| 在线观看成人网 | 成人影院久久久久久影院| 国产福利免费观看| 国产不卡高清在线观看视频| 一本高清在线| 午夜精品国产自在现线拍| 四虎影视久久久免费| 日韩中文字幕在线观看视频| 国产成人精品一区二区视频| 999精品在线| 国产精品1024永久免费视频| 日本免费区| 国产a网| 成人免费高清视频| 久久久久久久免费视频| 欧美一区二区三区性| 久久精品成人一区二区三区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚欧视频在线| 日本免费看视频| 91麻豆爱豆果冻天美星空| 国产亚洲免费观看| 麻豆系列国产剧在线观看| 日韩中文字幕一区二区不卡| 亚洲 男人 天堂| 国产成人精品综合| 精品久久久久久免费影院| 韩国三级视频在线观看| 九九九在线视频| 亚洲第一色在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产美女在线观看| 日韩免费在线观看视频| 亚洲不卡一区二区三区在线| 亚洲 男人 天堂| 韩国毛片免费大片| 天天色成人| 国产a网| 黄色福利片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 可以在线看黄的网站| 成人a级高清视频在线观看| 99久久精品国产国产毛片| 国产麻豆精品免费视频| 亚洲女人国产香蕉久久精品 | 久久成人性色生活片| 精品国产一区二区三区久久久蜜臀| 韩国毛片| 欧美一区二区三区在线观看| 欧美激情一区二区三区在线| 亚欧成人毛片一区二区三区四区| 午夜在线观看视频免费 成人| 国产一区二区高清视频| 日韩av东京社区男人的天堂| 亚洲女人国产香蕉久久精品| 免费一级片网站| 久草免费资源| 欧美电影免费看大全| 国产网站免费视频| 欧美另类videosbestsex视频| 国产a视频| 99久久精品费精品国产一区二区| 在线观看导航| 亚洲天堂在线播放| 精品美女| 亚洲第一页乱| 国产亚洲免费观看| 亚洲天堂免费| 四虎久久影院| 色综合久久天天综线观看| 一a一级片| 国产成人精品一区二区视频| 精品国产香蕉在线播出| 国产伦理精品| 国产国语对白一级毛片| 四虎影视久久| 天天色色网| 免费国产在线视频| 欧美a免费| 精品视频在线观看视频免费视频 | 精品国产香蕉在线播出| 日本免费看视频| 99热精品在线| 欧美一级视| 成人免费观看的视频黄页| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 人人干人人草| 九九九在线视频| 欧美a免费| 欧美a级v片不卡在线观看| 毛片高清| 成人免费福利片在线观看| 国产麻豆精品hdvideoss| 成人免费福利片在线观看| 免费毛片播放| 日韩中文字幕一区| 韩国毛片免费大片| 国产不卡在线看| 欧美国产日韩一区二区三区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 久久精品成人一区二区三区| 国产原创中文字幕| 精品久久久久久影院免费| 黄色短视屏| 人人干人人插| 九九精品在线播放| 99色精品| 一级片片| 久久99这里只有精品国产| 精品视频在线看 | 日日日夜夜操| 欧美大片aaaa一级毛片| 成人免费福利片在线观看| 高清一级毛片一本到免费观看| 久久福利影视| 日韩男人天堂| 美女免费精品高清毛片在线视| 成人影视在线播放| 日韩av东京社区男人的天堂| 天天做人人爱夜夜爽2020| 999精品影视在线观看| 精品在线视频播放| 99久久精品国产免费| 999精品影视在线观看| 台湾毛片| 黄色福利片| 一级毛片视频在线观看| 美女免费精品视频在线观看| 97视频免费在线观看| 一级女性大黄生活片免费| 日本伦理片网站| 99色吧| 国产91素人搭讪系列天堂| 久草免费在线色站| 国产伦精品一区三区视频| 中文字幕97| 久久国产一久久高清| 国产伦精品一区三区视频| 欧美一级视|