亚洲午夜精品久久久久久性色_在线成人免费网站_亚洲欧美成人一区二区在线电影_欧美日韩免费一区

昆明國際旅行社
昆明國際旅行社
新聞信息
推薦最新信息 Top 10
推薦旅游工具
電子地圖 電子地圖 云南租車 云南租車
天氣預報 天氣預報 旅游社區-昆明國際旅行社 旅游社區
酒店預訂-昆明國際旅行社 酒店預訂 云南特產-昆明國際旅行社 云南特產
航班動態_昆明國際旅行社 航班動態 高爾夫旅游_昆明國際旅行社 高爾夫旅游
推薦旅游用品
昆明國際旅行社
您現在的位置: 昆明國際旅行社 >>  地名問答 > 國內 > 浙江 > 斷橋殘雪 >  >> 正文
 
CString需要注意的地方
CString需要注意的地方
本站:昆明國際旅行社   來源:本站原創   點擊數:

很多的程序, 發現很大的一部分bug 是關于MFC 類中的Cstring 的錯誤用法的. 出現這種錯誤的原因主要是對Cstring 的實現機制不是太了解。

Cstring 是對于原來標準c 中字符串類型的一種的包裝。因為,通過很長時間的編程,我們發現, 很多程序的bug 多和字符串有關, 典型的有:緩沖溢出、內存泄漏等。而且這些bug 都是致命的,會造成系統的癱瘓。因此c++ 里就專門的做了一個類用來維護字符串指針。標準c++ 里的字符串類是string ,在microsoft MFC 類庫中使用的是Cstring 類。通過字符串類,可以大大的避免c 中的關于字符串指針的那些問題。

    這里我們簡單的看看Microsoft MFC 中的Cstring 是如何實現的。當然,要看原理,直接把它的代碼拿過來分析是最好的。MFC 里的關于Cstring 的類的實現大部分在strcore.cpp 中。

    Cstring 就是對一個用來存放字符串的緩沖區和對施加于這個字符串的操作封裝。也就是說,Cstring 里需要有一個用來存放字符串的緩沖區,并且有一個指針指向該緩沖區,該指針就是LPTSTR m_pchData 。但是有些字符串操作會增建或減少字符串的長度,因此為了減少頻繁的申請內存或者釋放內存,Cstring 會先申請一個大的內存塊用來存放字符串。這樣,以后當字符串長度增長時,如果增加的總長度不超過預先申請的內存塊的長度,就不用再申請內存。當增加后的字符串長度超過預先申請的內存時,Cstring 先釋放原先的內存,然后再重新申請一個更大的內存塊。同樣的,當字符串長度減少時,也不釋放多出來的內存空間。而是等到積累到一定程度時,才一次勝將多余的內存釋放。

   還有,當使用一個Cstring 對象a 來初始化另一個Cstring 對象b 時,為了節省空間,新對象b 并不分配空間,它所要做的只是將自己的指針指向對象a 的那塊內存空間,只有當需要修改對象a 或者b 中的字符串時,才會為新對象b 申請內存空間,這叫做寫入復制技術(CopyBeforeWrite) 。

    這樣,僅僅通過一個指針就不能完整的描述這塊內存的具體情況,需要更多的信息來描述。

   首先,需要有一個變量來描述當前內存塊的總的大小。其次,需要一個變量來描述當前內存塊已經使用的情況。也就是當前字符串的長度。另外,還需要一個變量來描述該內存塊被其他Cstring 引用的情況。有一個對象引用該內存塊,就將該數值加一。

   Cstring 中專門定義了一個結構體來描述這些信息:

struct CStringData

{

   long nRefs;             // reference count

   int nDataLength;        // length of data (including terminator)

   int nAllocLength;       // length of allocation

                            // TCHAR data[nAllocLength]

   TCHAR* data()           // TCHAR* to managed data

   { return (TCHAR*)(this+1); }

};

    實際使用時,該結構體的所占用的內存塊大小是不固定的,在Cstring 內部的內存塊頭部,放置的是該結構體。從該內存塊頭部開始sizeof(CstringData)BYTE 后才是真正的用于存放字符串的內存空間。這種結構的數據結構的申請方法是這樣實現的:

pData = (CStringData*) new BYTE[sizeof(CStringData) + (nLen+1)*sizeof(TCHAR)];

pData->nAllocLength = nLen;

其中nLen 是用于說明需要一次勝申請的內存空間的大小的。

從代碼中可以很容易的看出,如果想申請一個256TCHAR 的內存塊用于存放字符串,實際申請的大小是:

sizeof(CstringData) BYTE (nLen+1)TCHAR

 
  • 精品推薦旅游線路精品推薦旅游線路
  • 昆明國際旅行社 昆明國際旅行社
    昆明國際旅行社
    【公司全稱】昆明國際旅行社
    【誠信旅游】云南5星級誠信旅行社
    【移動電話】01588783000 (全天)
    【業務 Q Q】276855576
    【網站聯系人】客服:小鄭 小張
    【網站負責人】手機:15887830008
    【匯款名稱】昆明國際旅行社
    【公司帳號】2402 7501 0400 *****(人民幣)
    【公司地址】昆明市北京路83號昆明國際旅行社
    【公司網址】http://www.gg7af.cn
    【溫馨提示】外地游客預付訂金時請匯到公司帳號 【互換鏈接】請加管理員QQ:276855576
    出境合同國內合同
    昆明國際旅行社|云南旅游|昆明旅游|大理旅游|麗江旅游|梅里雪山|昆明自助游攻略|云南自助游攻略|風景圖片|www.kunmingguoji.com|昆明市旅游租車

    推薦鏈接:云南國旅

    亚洲午夜精品久久久久久性色_在线成人免费网站_亚洲欧美成人一区二区在线电影_欧美日韩免费一区
    国产成都精品91一区二区三| 精品电影一区二区| 精品福利在线导航| 美日韩黄色大片| 精品久久久久av影院| 青青草原综合久久大伊人精品优势 | 26uuu欧美日本| 国产另类ts人妖一区二区| 欧美肥大bbwbbw高潮| 精品一区二区三区免费观看| 久久精品一区蜜桃臀影院| 成人一道本在线| 国产精品无码永久免费888| 丁香五精品蜜臀久久久久99网站| 亚洲天堂a在线| 欧美裸体一区二区三区| 日韩激情一二三区| 久久综合久久综合亚洲| av中文字幕不卡| 亚洲一区二区三区激情| 日韩欧美一级特黄在线播放| 97精品国产露脸对白| 久久精品视频一区二区| 成人不卡免费av| 亚洲成av人片在www色猫咪| 精品乱码亚洲一区二区不卡| 成人91在线观看| 天堂精品中文字幕在线| 久久人人超碰精品| 日本黄色一区二区| 九色|91porny| 亚洲美女免费视频| 欧美一区二区精品在线| 国产精品1区2区3区| 亚洲综合精品久久| 精品久久久久av影院 | 久久www免费人成看片高清| 精品国产伦一区二区三区免费| 国产99久久久精品| 无码av中文一区二区三区桃花岛| 久久九九影视网| 欧美艳星brazzers| 国产电影一区二区三区| 午夜视黄欧洲亚洲| 欧美高清在线精品一区| 欧美日韩国产免费一区二区| 国产91精品入口| 日韩主播视频在线| 中文字幕一区av| 日韩精品在线一区| 日本道色综合久久| 国产黑丝在线一区二区三区| 天天免费综合色| 中文字幕一区二区在线观看 | 国产精品自拍av| 午夜精品福利久久久| 欧美激情一区在线观看| 欧美一区二区在线不卡| 91麻豆成人久久精品二区三区| 伦理电影国产精品| 一区二区激情视频| 欧美国产日本视频| 欧美一区二区三区小说| 91久久免费观看| 成人综合在线网站| 日韩成人免费在线| 亚洲精品成人精品456| 久久综合九色综合欧美亚洲| 欧美日本国产视频| 91在线看国产| 国产成人一级电影| 精品一区二区综合| 五月开心婷婷久久| 尤物av一区二区| 欧美日韩精品一区二区三区四区 | 在线不卡的av| 色婷婷久久久久swag精品| 国产xxx精品视频大全| 美女久久久精品| 亚洲一级二级三级| 最新中文字幕一区二区三区| 久久久www成人免费毛片麻豆| 日韩一级精品视频在线观看| 欧美三级欧美一级| 91福利视频网站| 色综合一区二区三区| 成人国产亚洲欧美成人综合网 | 国产曰批免费观看久久久| 免费在线观看视频一区| 亚洲福利视频三区| 一区二区三区视频在线看| 国产精品素人一区二区| 久久精品夜色噜噜亚洲a∨| 日韩一区二区高清| 六月丁香婷婷色狠狠久久| 国产精品久久久久婷婷二区次| 国产色产综合色产在线视频| 久久久精品天堂| 国产日产欧产精品推荐色| 欧美高清在线精品一区| 国产精品天天摸av网| 亚洲丝袜自拍清纯另类| 亚洲精品老司机| 亚洲观看高清完整版在线观看| 亚洲成人动漫在线观看| 日本不卡一区二区| 久久国产免费看| 国产黄色成人av| 成人午夜激情影院| 91蜜桃免费观看视频| 欧美伊人久久久久久久久影院| 欧美三级日韩三级| 日韩欧美中文一区| 久久免费午夜影院| 国产精品久久久久久久久动漫 | 99在线热播精品免费| 91黄色激情网站| 欧美放荡的少妇| 26uuu成人网一区二区三区| 国产亚洲成av人在线观看导航| 中文字幕一区二区三区四区不卡| 亚洲精品日韩一| 日本不卡不码高清免费观看| 精品无人区卡一卡二卡三乱码免费卡| 国产老肥熟一区二区三区| 99re这里都是精品| 欧美日韩1区2区| 久久久综合视频| 亚洲美女偷拍久久| 日本va欧美va精品发布| 国产成人免费视频精品含羞草妖精| 99re66热这里只有精品3直播| 欧美日韩一区小说| 精品国产欧美一区二区| 综合网在线视频| 日精品一区二区| 国产精品一品视频| 在线精品视频免费播放| 日韩欧美卡一卡二| 国产精品国产自产拍在线| 亚洲成在人线在线播放| 精品一区二区在线播放| 91性感美女视频| 678五月天丁香亚洲综合网| 国产日韩欧美一区二区三区乱码| 亚洲免费观看高清在线观看| 日本欧美一区二区| 国产高清一区日本| 欧美视频你懂的| 久久精品视频一区| 午夜欧美电影在线观看| 国产91精品免费| 欧美精品一二三| 中国色在线观看另类| 婷婷久久综合九色综合伊人色| 国产99久久久国产精品潘金网站| 欧美色图天堂网| 欧美激情一区在线观看| 三级在线观看一区二区| k8久久久一区二区三区| 777a∨成人精品桃花网| 亚洲欧洲一区二区在线播放| 麻豆精品国产91久久久久久| 色哟哟欧美精品| 久久精品视频网| 日韩和的一区二区| 99国产精品视频免费观看| 精品日韩成人av| 亚洲一区二区高清| 高清av一区二区| 欧美电影精品一区二区| 亚洲一区二三区| 成人av免费在线| 久久综合九色欧美综合狠狠| 午夜精品久久一牛影视| 91在线一区二区| 国产三级欧美三级日产三级99| 天天操天天色综合| 91视频免费播放| 国产欧美一区二区精品久导航| 免费人成精品欧美精品| 91福利在线免费观看| 中文字幕第一区综合| 久久99精品国产.久久久久| 欧美日韩的一区二区| 亚洲欧洲中文日韩久久av乱码| 国产一区二区三区四| 欧美一区二区三区公司| 亚洲制服欧美中文字幕中文字幕| 成人动漫一区二区| 久久久www成人免费毛片麻豆| 免费人成精品欧美精品| 欧美日韩一区二区三区高清 | 亚洲欧洲精品天堂一级 | 福利一区福利二区| 精品国产伦一区二区三区观看方式| 午夜欧美一区二区三区在线播放| 91视频免费观看| 中文字幕一区av| 成人性生交大片免费 |