Using C++
posted on 2009-10-29 18:23 codejie 閱讀(1189) 評(píng)論(10) 編輯 收藏 引用 所屬分類: C++ 、隨筆而已
嘿嘿,我一直不會(huì)寫C,從來都木有學(xué)過 @_@ 回復(fù) 更多評(píng)論
我記得當(dāng)年你給我推薦過一本書,講的是C++內(nèi)存的布置。因?yàn)橐獙?shí)現(xiàn)OOP的緣故,類的封裝開銷確實(shí)要比C大。我相信你還記得這個(gè)吧?對(duì)于臺(tái)式機(jī)來說,現(xiàn)在這點(diǎn)內(nèi)存已經(jīng)不算啥了。對(duì)于嵌入式系統(tǒng),操作系統(tǒng)內(nèi)核來說,這點(diǎn)開銷還是很多人在乎的……我現(xiàn)在工作的板子,內(nèi)存才48M呢。整個(gè)Linux跑起來還要加載各種驅(qū)動(dòng)模塊加上應(yīng)用程序,JAVA虛擬機(jī)……內(nèi)存很重要的 回復(fù) 更多評(píng)論
@Liu順便說一句,我們板子的存儲(chǔ)空間只有16M,其中2M可以供應(yīng)用程序讀寫。14M包括整個(gè)操作系統(tǒng)加上應(yīng)用程序(ftpd,tftpd,tr69,httpd,dhcpd還有其他各種統(tǒng)計(jì)工具監(jiān)控工具時(shí)間同步軟件防火墻過濾規(guī)則匹配等等等等),web的網(wǎng)頁圖片和一個(gè)簡(jiǎn)單的XML數(shù)據(jù)庫……不節(jié)約用能行么 回復(fù) 更多評(píng)論
關(guān)于第2點(diǎn)不解,看英文描述不是說:在函數(shù)體外面聲明了動(dòng)態(tài)數(shù)組。 C99支持動(dòng)態(tài)數(shù)組,但可能不允許作為全局變量定義。 你的解說莫明其妙! 回復(fù) 更多評(píng)論
@Liu你的run環(huán)境比我這邊可憐好多。。。我們?cè)趺匆彩莾蓚€(gè)扳子,8G內(nèi)存,4個(gè)CPU,24個(gè)核,還有一個(gè)不知道大小的Shared Memory。。。在我看來,這樣的條件下,完成可以使用C++來編寫程序了。目前從我得到的情況看,用C的緣由是因?yàn)槟銈傾國人,只會(huì)用C。。。。我現(xiàn)在在努力把自己的腦袋變成C腦袋。。。 回復(fù) 更多評(píng)論
@wu嗯,你說的對(duì),這個(gè)錯(cuò)誤應(yīng)該是由于動(dòng)態(tài)數(shù)組的原因?qū)е碌摹?br>我不知道C99標(biāo)準(zhǔn)定義了什么,但我用GCC 3.46還是不支持的。想來比較好理解,程序加載時(shí),全局變量在開始就初始了,由于在初始時(shí)并沒有初始順序的概念,因此可能存在不知道數(shù)組大小的情況,這樣,動(dòng)態(tài)數(shù)組就無法初始,編譯錯(cuò)誤也指出了問題所在。不知道我這樣理解是否正確,謝謝指點(diǎn)。 回復(fù) 更多評(píng)論
@codejie你們是局端設(shè)備,配置當(dāng)然不是我們這些用戶端設(shè)備可以比擬的。不過你們真的可以用C++了,就是估計(jì)以前的傳統(tǒng)都是C,現(xiàn)在想改也難阿…… 回復(fù) 更多評(píng)論
所謂動(dòng)態(tài)數(shù)組也是通過棧空間實(shí)現(xiàn)的,全局變量肯定不成啦。 其實(shí)LENGTH已經(jīng)被定義成常量了,在C++可以用作定義靜態(tài)數(shù)組長(zhǎng)度了, 但在C里面好像還是不可以吧?既然報(bào)了這個(gè)錯(cuò),我猜她是支持動(dòng)態(tài)數(shù)組的, int fun(int n) {char array[n];} // 定義時(shí)動(dòng)態(tài),使用期間不可擴(kuò)縮 回復(fù) 更多評(píng)論
@Liu是啊,只有我迎合工作,沒有工作迎合我之說啊~ 回復(fù) 更多評(píng)論
◎wu是的,我知道C++這樣是OK的。。。 回復(fù) 更多評(píng)論