91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言中申請的堆內存能不能自動釋放

學益得智能硬件 ? 來源:學益得智能硬件 ? 2024-11-27 09:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

C語言中申請的堆內存能不能自動釋放?每次都要手動 free 太麻煩,也容易忘記。

學過 C++ 的同學,應該首先能想到智能指針。

但是這是C語言,沒有類和對象、構造析構這些技術,想要自動釋放很難。

下面給大家介紹一種黑科技

之前我們講過 GNU 的 attribute 屬性,里面可以是 packed unused 等等,還有一個,叫 cleanup。

cleanup的作用就是當其聲明的變量離開了生命周期,就會調用指定的函數。

這剛好滿足了我們的要求。

比如這樣的代碼,給 str 申請了內存,但是整個代碼中也沒有釋放,妥妥的內存泄漏。

定義 str 的時候,可以在后面加上 attribute cleanup,指定函數 func,意思就是,當變量 str 生命周期結束的時候,會調用 func 函數。換句話說,只要 main 函數結束了,就會調用 func 函數。

func 函數有個參數,是變量 str 的地址,可以寫成 char ** 類型,在函數的內部可以釋放剛才申請的堆內存。

這樣在 main 函數結束的時候,就會自動調用 func 函數釋放堆內存,有點智能指針的意思。

有了 func 函數,在任意地方定義指針,只要加上 attribute 屬性,函數運行結束,就能自動釋放堆內存。

attribute 屬性并不是 C 標準內容,屬于 GNU 擴展功能,不過也不排除后面被加到標準里面的可能性。

了解一下就行,不建議使用,太過于冷門。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3124

    瀏覽量

    75268
  • C語言
    +關注

    關注

    180

    文章

    7632

    瀏覽量

    141728
  • 函數
    +關注

    關注

    3

    文章

    4381

    瀏覽量

    64865

原文標題:堆內存也能自動釋放

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    工廠設備能不能工業數采?3招教你快速判斷,省時又省錢!

    設備能不能采?記住這五招:看接口、問協議、查燈亮、找廠家、加傳感器。大部分現代工廠設備(PLC/CNC/注塑機),甚至部分干燥機、模溫機,都是能采的!別被“老設備”嚇住。
    的頭像 發表于 07-03 10:09 ?138次閱讀
    工廠設備<b class='flag-5'>能不能</b>工業數采?3招教你快速判斷,省時又省錢!

    STM32C031F4 FLASH存儲器讀寫例程各位高能不能提供一個?

    STM32C031F4FLASH存儲器 讀寫例程 各位高能不能提供一個謝謝大家
    發表于 03-13 07:37

    分析C語言代碼結構的設計問題

    來分析一個C語言代碼結構的設計問題。 這段代碼,使用了兩次malloc,分別給 p1 和 p2 申請內存。用完后,內存
    的頭像 發表于 02-11 09:31 ?370次閱讀

    指針被釋放后就變成了空指針嗎

    ;} ? ? 這段代碼大家看下有沒有問題,能不能順利運行? 前面三行都沒有問題,指針 s 指向了一塊內存,把字符串 helloworld 拷貝到
    的頭像 發表于 01-22 09:23 ?388次閱讀

    ADS8568能不能使用單電源供電?

    ADS8568能不能使用單電源供電,即HVSS接地,HVDD接+12V,能正常工作嗎?我現在用的硬件模式,采不到數據。。
    發表于 01-17 06:14

    EE-62:在C語言中訪問短字內存

    電子發燒友網站提供《EE-62:在C語言中訪問短字內存.pdf》資料免費下載
    發表于 01-07 14:02 ?0次下載
    EE-62:在<b class='flag-5'>C</b><b class='flag-5'>語言中</b>訪問短字<b class='flag-5'>內存</b>

    EE-128:C語言中的DSP:從C調用匯編類成員函數

    電子發燒友網站提供《EE-128:C語言中的DSP:從C調用匯編類成員函數.pdf》資料免費下載
    發表于 01-07 13:48 ?0次下載
    EE-128:<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的DSP:從<b class='flag-5'>C</b>調用匯編類成員函數

    C6748的McBSP接口能不能讀ad1271的轉化數據?

    AD1271可以工作在兩種模式,一種是SPI;另一種是Frame Sync,我如果用C6748的McBSP接口能不能讀ad1271的轉化數據?
    發表于 01-01 07:22

    C語言中的頭文件能不能重復包含

    C語言中的頭文件能不能重復包含? 比如代碼寫成這樣,stdio.h 連續包含了兩次。 #include #include int main(){ printf("helloworld
    的頭像 發表于 11-26 17:19 ?605次閱讀

    使用C語言實現函數模板

      用C語言能不能實現一個通用的函數,既能完成整數的相加,又能完成浮點數的相加?
    的頭像 發表于 11-09 11:38 ?947次閱讀

    C語言中的socket編程基礎

    Socket編程簡介 Socket是一種通信機制,允許程序之間進行通信。在C語言中,socket編程是網絡編程的基礎。通過使用socket,程序可以發送和接收數據,實現不同計算機之間的通信
    的頭像 發表于 11-01 16:51 ?1229次閱讀

    一體成型電感外殼破損還能不能

    電子發燒友網站提供《一體成型電感外殼破損還能不能用.docx》資料免費下載
    發表于 10-31 10:57 ?0次下載

    UTB定位技術能不能精準定位

    在當今科技日新月異的時代,定位技術以其廣泛的應用場景和不斷提升的精度,成為了多個領域的核心支撐。其中,UTB定位技術以其高精度、低延遲和高抗干擾性等特點,在眾多定位技術中脫穎而出,成為精準定位領域的佼佼者。那么,UTB定位技術到底能不能精準定位呢?下面就給大家具體介紹一下關于UTB定位技術。
    的頭像 發表于 09-03 10:07 ?1233次閱讀

    c語言中從左到右結合怎么看

    C語言中,操作符的結合性(Associativity)是指當操作符在表達式中連續出現時,它們如何與操作數結合的順序。對于大多數二元操作符(即需要兩個操作數的操作符),C語言遵循兩種基
    的頭像 發表于 08-20 11:42 ?1671次閱讀

    TL331能不能防反接,負向耐壓多少?

    請問一下,TL331能不能防反接,負向耐壓多少?還請告知一下?
    發表于 08-08 06:39
    主站蜘蛛池模板: 夜夜夜爽bbbb性视频 | 欧美色视频超清在线观看 | 天天插天天搞 | 亚洲插| 欧美经典三级春潮烂漫海棠红 | 四虎影院永久免费观看 | 男男之h啪肉np文 | 亚欧美综合 | 男人的天堂在线视频 | 免费精品99久久国产综合精品 | 淫婷婷 | 天天拍天天干天天操 | 亚洲第一区精品日韩在线播放 | 国产欧美日韩电影 | 377p亚洲欧洲日本大胆色噜噜 | 亚洲va中文va欧美va爽爽 | 国内真实下药迷j在线观看 国内自拍 亚洲系列 欧美系列 | 天天狠狠操| 奇米影视7777 | 拍拍拍美女黄色1000视频 | 在线观看一级片 | 四虎永久免费网站入口2020 | 欧洲精品不卡1卡2卡三卡 | 444kk免费 | 色西西 | 在线视频 亚洲 | 生活片黄色 | 中文字幕在线观看日剧网 | 最好免费高清视频观看韩国 | 一区二区三区高清在线 | 国产欧美日韩综合精品一区二区 | 男女交性视频免费视频 | 六月丁香婷婷激情国产 | 久操视频免费 | 亚洲第一在线播放 | 一区二区影院 | 久久黄视频 | avtt香蕉| 69精品在线| 深爱激情小说网 | 神马午夜嘿嘿 |