成人黄色在线网站 I 国产aa免费 I 中文字幕免费高清 I 国产三级影院 I 日韩欧美三级在线观看 I 久久久国产精品麻豆a片 I 欧美与黑人午夜性猛交久久久 I 91国产精品视频在线 I 国产美女狂喷水潮在线播放 I 黄页免费网站在线观看 I 欧美日韩激情视频 I 午夜理论无码片在线观看免费 I 深夜爽爽动态图无遮无挡 I 国精产品一区一区三区有限公司杨 I 天天操天天舔天天爽 I 免费看日本黄色片 I 成人va在线 I 日韩中文字幕在线观看 I 婷婷综合网 I 97视频免费观察看 I 色月丁香 I 日韩视频一二三 I 男女黄色毛片 I 美女疯狂连续喷潮视频 I 亚洲日本va一区二区sa I 欧美日韩视频区 I 毛片网在线 I 欧美一本在线 I 少妇一级淫片免费放香蕉 I avav在线看 I 久久精品亚洲中文字幕无码网站 I 天堂av在线中文在线新版 I 电影一区 电影二区 I 色av吧 中文字幕 I 国产精品伊人色

歡迎來(lái)到培訓(xùn)無(wú)憂網(wǎng)!

全國(guó)切換

咨詢(xún)熱線 400-001-5729

位置:培訓(xùn)無(wú)憂網(wǎng) > 新聞資訊 > 電腦/IT > c語(yǔ)言 >  C語(yǔ)言培訓(xùn)返回內(nèi)部靜態(tài)成員的陷阱有哪些

C語(yǔ)言培訓(xùn)返回內(nèi)部靜態(tài)成員的陷阱有哪些

來(lái)源:www.hebeijilong.cn 發(fā)布人:星星

2021-12-31 10:22:32|已瀏覽:4877次

C語(yǔ)言返回內(nèi)部靜態(tài)成員的陷阱

      我們用C/C++開(kāi)發(fā)的過(guò)程中,總是有一個(gè)問(wèn)題會(huì)給我們帶來(lái)苦惱。這個(gè)問(wèn)題就是函數(shù)內(nèi)和函數(shù)外代碼需要通過(guò)一塊內(nèi)存來(lái)交互(比如,函數(shù)返回字符串),這個(gè)問(wèn)題困擾和很多開(kāi)發(fā)人員。如果你的內(nèi)存是在函數(shù)內(nèi)棧上分配的,那么這個(gè)內(nèi)存會(huì)隨著函數(shù)的返回而被彈棧釋放,所以,你一定要返回一塊函數(shù)外部還有效的內(nèi)存。

      這是一個(gè)讓無(wú)數(shù)人困擾的問(wèn)題。如果你一不小心,你就很有可能在這個(gè)上面犯錯(cuò)誤。當(dāng)然目前有很多解決方法,如果你熟悉一些標(biāo)準(zhǔn)庫(kù)的話,你可以看到許多各式各樣的解決方法。大體來(lái)說(shuō)有下面幾種:
      1)在函數(shù)內(nèi)部通過(guò)malloc或new在堆上分配內(nèi)存,然后把這塊內(nèi)存返回(因?yàn)樵诙焉戏峙涞膬?nèi)存是全局可見(jiàn)的)。這樣帶來(lái)的問(wèn)題就是潛在的內(nèi)存問(wèn)題。因?yàn),如果返回出去的?nèi)存不釋放,那么就是memory Leak。或者是被多次釋放,從而造成程序的crash。這兩個(gè)問(wèn)題都相當(dāng)?shù)膰?yán)重,所以這種設(shè)計(jì)方法并不推薦。(在一些Windows API中,當(dāng)你調(diào)用了一些API后,你必需也要調(diào)用他的某些API來(lái)釋放這塊內(nèi)存)
      2)讓用戶(hù)傳入一塊他自己的內(nèi)存地址,而在函數(shù)中把要返回的內(nèi)存放到這塊內(nèi)存中。這是一個(gè)目前普遍使用的方式。很多Windows API函數(shù)或是標(biāo)準(zhǔn)C函數(shù)都需要你傳入一個(gè)buffer和這個(gè)buffer的長(zhǎng)度。這種方式對(duì)我們來(lái)說(shuō)應(yīng)該是屢見(jiàn)不鮮了。這種方式的好處就是由函數(shù)外部的程序來(lái)維護(hù)這塊內(nèi)存,比較簡(jiǎn)顯直觀。但問(wèn)題就是在使用上稍許有些麻煩。不過(guò)這種方式把犯錯(cuò)誤的機(jī)率減到了最低。

      3)第三種方式顯得比較另類(lèi),他利用了static的特性,static的棧內(nèi)存一旦分配,那這塊內(nèi)存不會(huì)隨著函數(shù)的返回而釋放,而且,它是全局可見(jiàn)的(只要你有這塊內(nèi)存的地址)。所以,有一些函數(shù)使用了static的這個(gè)特性,即不用使用堆上的內(nèi)存,也不需要用戶(hù)傳入一個(gè)buffer和其長(zhǎng)度。從而,使用得自己的函數(shù)長(zhǎng)得很漂亮,也很容易使用。

      本文由培訓(xùn)無(wú)憂網(wǎng)達(dá)內(nèi)教育專(zhuān)屬課程顧問(wèn)老師整理發(fā)布,更多C語(yǔ)言課程信息可關(guān)注培訓(xùn)無(wú)憂網(wǎng)C語(yǔ)言培訓(xùn)頻道或添加老師微信:15033336050

      注:尊重原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處和鏈接 http://www.hebeijilong.cn/news-id-11440.html 違者必究!部分文章來(lái)源于網(wǎng)絡(luò)由培訓(xùn)無(wú)憂網(wǎng)編輯部人員整理發(fā)布,內(nèi)容真實(shí)性請(qǐng)自行核實(shí)或聯(lián)系我們,了解更多相關(guān)資訊請(qǐng)關(guān)注c語(yǔ)言頻道查看更多,了解相關(guān)專(zhuān)業(yè)課程信息您可在線咨詢(xún)也可免費(fèi)申請(qǐng)?jiān)囌n。關(guān)注官方微信了解更多:150 3333 6050

留下你的信息,課程顧問(wèn)老師會(huì)一對(duì)一幫助你規(guī)劃更適合你的專(zhuān)業(yè)課程!
  • 姓名:

  • 手機(jī):

  • 地區(qū):

  • 想學(xué)什么:

  • 培訓(xùn)無(wú)憂網(wǎng)
免 費(fèi) 申 請(qǐng) 試 聽(tīng)
提交申請(qǐng),《培訓(xùn)無(wú)憂網(wǎng)》課程顧問(wèn)老師會(huì)一對(duì)一幫助你規(guī)劃更適合你的專(zhuān)業(yè)課程!