青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

飯中淹的避難所~~~~~

偶爾來避難的地方~

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  94 隨筆 :: 0 文章 :: 257 評論 :: 0 Trackbacks

我一般編程的時候,喜歡用我自己設(shè)計的string類,最近在設(shè)計結(jié)構(gòu)體的時候,我想到了一個適合結(jié)構(gòu)體使用的string類的設(shè)計方法,不過可能我比較孤陋寡聞,這個方法以前就有人實現(xiàn)過,不過還是記錄下來。

一般來說,string,至少需要保存一個char*的指針和一個int的長度,復雜點的,可能還需要更多的成員。

這樣的話,我們需要至少8個字節(jié)來保存這個string對象(32bit下)。

在部分場合,我們可能會希望把一個指針替換為一個string對象,或者把一個string對象,替換為一個指針,而且我們對結(jié)構(gòu)體的大小很敏感,union也行不通。如果我們放一個string的指針,那么我們就需要new一個string對象出來,然后string內(nèi)部再去new一個char[]的數(shù)組。

為此,我想了一個辦法來解決這個問題。我在string內(nèi)部引入一個context的東西,它保存了所有string的成員變量,然后結(jié)尾是字符串數(shù)組,形似下面這個結(jié)構(gòu):

1    typedef struct tagStringContext
2    {
3        int nMaxLength;
4        int nLength;
5        char szBuf[1];
6    }
t_StringContext;
7

每次分配內(nèi)存的時候,把這個結(jié)構(gòu)放在頭部,然后分配 長度+sizeof(int)*2的內(nèi)存,用來創(chuàng)建一個字符串。

m_pContext = (t_StringContext*)alloc( sizeof(int)*2 + nMaxLength );
m_pContext
->nMaxLength = nMaxLength;
m_pContext
->nLength = nLength;
memcpy( (LPVOID)m_pContext
->szBuf, (LPVOID)pszString, nLength + 1 ); // with zero tail

這樣,string類只要有m_pContext這一個成員就行了,而這個成員,就是t_StringContext*類型的,它是一個指針。這就意味著,它可以從任意的可以容納一個指針的位置構(gòu)造出來。
如果你在考慮如果m_pContext為null怎么辦的話,那當然是string返回空字符串和0 length了。

這種方法只要做一次內(nèi)存分配,就可以在一個指針位置構(gòu)造出一個string對象來。

不過,一定要保證string類里面沒有虛函數(shù),因為它會在類對象的前頭加上一些信息(虛表指針之類的東西)。

另外,因為我對其他編譯器不是很熟悉,我只在ms vc8.0,7.0,6.0自帶的編譯器上測試過。而在其他編譯器上,這個方法可能失效。


posted on 2008-04-11 11:13 飯中淹 閱讀(2864) 評論(9)  編輯 收藏 引用

評論

# re: 對string類的思考 2008-04-11 12:18 raof01
雖然你的想法已經(jīng)有很多人這么做了,不過我覺得你自己想出來也很了不起,敬仰啊。  回復  更多評論
  

# re: 對string類的思考 2008-04-11 13:16 cppexplore
呵呵,以前寫c語言常用的方法。
c語言中,指針在結(jié)構(gòu)體里的使用,真是非常的精巧。  回復  更多評論
  

# re: 對string類的思考[未登錄] 2008-04-11 13:58 zzz
delphi 里面的字符串?  回復  更多評論
  

# re: 對string類的思考 2008-04-11 14:30 大海
我受益匪淺  回復  更多評論
  

# re: 對string類的思考 2008-04-11 14:31 giscn
建議看看VC6 CString 的實現(xiàn)  回復  更多評論
  

# re: 對string類的思考 2008-04-11 17:24 eXile
VC6 CString 的字符串也就是常見的引用計數(shù), 象lz這種實現(xiàn), 再配合一個好用的內(nèi)存池, 應該是蠻不錯的.   回復  更多評論
  

# re: 對string類的思考 2008-04-11 20:12 空明流轉(zhuǎn)
shared_ptr<string> / string*,一切都搞定了。  回復  更多評論
  

# re: 對string類的思考 2008-04-14 13:10 阿福
你用GCC試試:sizeof(string)=4
GCC的內(nèi)存池考慮了更多的東西。
看看我的分析,交流下思路:
http://blog.csdn.net/ah__fu/archive/2008/02/05/2084270.aspx
復雜的GCC字符串池  回復  更多評論
  

# re: 對string類的思考[未登錄] 2008-06-17 18:58 christanxw
類似于MFC CSting的內(nèi)存結(jié)構(gòu)  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一二三视频| 99视频精品免费观看| 欧美一级片在线播放| 亚洲一区二区三区免费在线观看 | 午夜日韩av| 国产日韩精品视频一区| 久久全国免费视频| 蜜桃av久久久亚洲精品| 99热在这里有精品免费| 夜夜嗨av一区二区三区中文字幕| 欧美肉体xxxx裸体137大胆| 99视频精品| 欧美一区深夜视频| 最近中文字幕mv在线一区二区三区四区| 亚洲欧洲精品成人久久奇米网| 欧美精品首页| 欧美专区福利在线| 久久一区二区三区四区| 亚洲一区二区三区久久| 久久av免费一区| 999亚洲国产精| 羞羞色国产精品| 亚洲日本在线观看| 亚洲欧美日韩第一区| 一区免费在线| 中文欧美在线视频| 亚洲国产激情| 亚洲制服av| 日韩亚洲在线观看| 久久精品国产成人| 亚洲一卡久久| 欧美+亚洲+精品+三区| 国产精品高清在线观看| 免费不卡在线观看av| 国产精品美女久久久久aⅴ国产馆| 久久蜜桃香蕉精品一区二区三区| 欧美日韩一区二区免费视频| 久久综合久久久| 国产精品狼人久久影院观看方式| 欧美激情五月| 国产日韩欧美不卡| 99热免费精品| 一区二区黄色| 免费成人在线观看视频| 久久影院午夜片一区| 国产精品青草综合久久久久99 | 亚洲一区免费观看| 亚洲免费成人av| 欧美 日韩 国产在线| 理论片一区二区在线| 国产视频观看一区| 亚洲一区二区三区在线| 中国av一区| 欧美日韩国产色综合一二三四| 欧美顶级艳妇交换群宴| 一区二区亚洲| 久久久精品2019中文字幕神马| 久久国产精品72免费观看| 国产九区一区在线| 亚洲欧美日韩中文播放| 欧美亚洲日本国产| 国产精品一区在线观看| 亚洲一区精彩视频| 性欧美暴力猛交69hd| 国产精品亚洲综合久久| 亚洲免费视频一区二区| 欧美一级视频| 国产尤物精品| 玖玖综合伊人| 亚洲国产精品一区制服丝袜 | 亚洲美女在线视频| 欧美国产精品久久| 亚洲免费成人av电影| 国产精品99久久久久久有的能看| 欧美小视频在线| 亚洲免费在线观看视频| 久久久最新网址| 亚洲国产另类久久精品| 欧美成人午夜激情视频| 亚洲美女av网站| 亚洲欧美影音先锋| 国产亚洲综合性久久久影院| 欧美中文字幕不卡| 欧美激情一区二区三级高清视频 | 欧美小视频在线观看| 亚洲欧美中文字幕| 老妇喷水一区二区三区| 亚洲国产导航| 欧美日韩在线三级| 先锋影音国产精品| 欧美成人免费在线观看| 亚洲深夜福利在线| 国产日本欧洲亚洲| 欧美h视频在线| 亚洲欧美国内爽妇网| 久久综合色一综合色88| 欧美日韩福利在线观看| 亚洲综合丁香| 亚洲国产一区在线观看| 亚洲伊人一本大道中文字幕| 国产亚洲一二三区| 欧美国产日韩精品| 性做久久久久久久免费看| 亚洲黄色小视频| 欧美在线视频观看| 亚洲伦理一区| 狠狠色狠狠色综合日日五| 欧美精品亚洲| 久久久久一区二区三区四区| 99香蕉国产精品偷在线观看| 麻豆精品视频在线观看视频| 亚洲一区欧美激情| 91久久精品国产91久久性色tv| 国产精品女人毛片| 欧美女激情福利| 另类欧美日韩国产在线| 香蕉久久夜色精品国产使用方法| 亚洲日本久久| 欧美成人精品在线播放| 久久av在线| 亚洲天堂免费在线观看视频| 亚洲国产日韩欧美在线动漫| 国产午夜精品全部视频播放| 欧美日韩免费观看一区| 男男成人高潮片免费网站| 午夜精品一区二区三区电影天堂 | 午夜欧美不卡精品aaaaa| 日韩亚洲欧美成人| 亚洲福利在线观看| 男女精品网站| 久久影视三级福利片| 久久久www免费人成黑人精品 | 免费观看久久久4p| 久久午夜电影网| 久久精品99国产精品日本| 亚洲永久免费| 午夜精品久久久久久久99黑人| 一区二区三区四区五区在线| 亚洲六月丁香色婷婷综合久久| 亚洲丶国产丶欧美一区二区三区 | 国产精品中文在线| 国产精品毛片| 国产欧美一区二区三区沐欲| 国产精品亚洲一区二区三区在线| 国产精品美女久久久久久久| 国产精品久久久久久久一区探花 | 国产精品久久午夜夜伦鲁鲁| 国产精品黄视频| 国产欧美精品国产国产专区| 国产视频精品xxxx| 国产一区二区三区直播精品电影| 国产视频在线观看一区二区三区 | 亚洲国产精品一区二区久| 亚洲第一中文字幕| 亚洲免费av片| 亚洲在线视频免费观看| 亚洲欧美综合v| 久久久蜜桃精品| 亚洲精品在线视频| 亚洲视频一区二区免费在线观看| 亚洲在线免费观看| 久久久久久午夜| 亚洲电影免费观看高清完整版| 亚洲黄色成人久久久| 一区二区三区四区蜜桃| 午夜视频一区二区| 久色成人在线| 国产精品久久久久久av下载红粉| 国产香蕉97碰碰久久人人| 影音先锋亚洲一区| 一区二区日韩免费看| 篠田优中文在线播放第一区| 麻豆精品一区二区av白丝在线| 亚洲激情国产| 午夜视频一区在线观看| 欧美成人按摩| 国产日韩欧美三区| 亚洲日本理论电影| 欧美一区二区三区四区在线| 欧美成人午夜剧场免费观看| 99精品视频一区| 久久在线91| 国产情侣一区| 夜夜精品视频一区二区| 久久精品国产亚洲一区二区三区 | 欧美大色视频| 亚洲免费小视频| 欧美另类高清视频在线| 国产一区二区三区电影在线观看| 日韩视频专区| 久久这里有精品视频| 亚洲小说欧美另类婷婷| 女同性一区二区三区人了人一 | 欧美福利视频| 国产一区二区三区四区老人| 一区二区高清在线| 欧美va天堂在线| 欧美在线在线| 国产精品亚洲欧美| 99精品久久久|