色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    3019

    瀏覽量

    74003
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136685
  • 函數
    +關注

    關注

    3

    文章

    4327

    瀏覽量

    62569

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

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

收藏 人收藏

    評論

    相關推薦

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

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

    使用C語言實現函數模板

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

    C語言中的socket編程基礎

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

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

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

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

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

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

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

    請問esp32能不能自動找到信號最強的wifi ap進行連接?

    你好,我的設置好多wifi ap 熱點,他們的ssid 和密碼 都是相同。請問 esp32 能不能自動找到信號最強的wifi ap 進行連接。謝謝。
    發表于 06-13 07:33

    C語言中,同一個函數能不能被定義兩次?

    稍微有點C語言基礎的同學,一定知道不能這樣做。
    的頭像 發表于 05-11 18:27 ?1696次閱讀

    C語言內存泄漏問題原理

    內存泄漏問題只有在使用內存的時候才會出現,棧內存不存在內存泄漏問題,因為棧內存
    發表于 03-19 11:38 ?521次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>內存</b>泄漏問題原理

    C語言中的動態內存管理講解

    本章將講解 C 中的動態內存管理。C 語言內存的分配和管理提供了幾個函數。這些函數可以在 頭文件中找到。
    的頭像 發表于 02-23 14:03 ?390次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的動態<b class='flag-5'>內存</b>管理講解

    同VLAN不同的網段能不能互通?

    同VLAN不同的網段能不能互通? 同一個VLAN中的設備擁有相同的網絡地址范圍,因此它們可以通過該VLAN進行通信。而不同VLAN中的設備擁有不同的網絡地址范圍,它們通常不能直接互通。然而,在某些
    的頭像 發表于 02-04 11:21 ?3080次閱讀

    如何解決C語言中的“訪問權限沖突”異常?C語言引發異常原因分析

    如何解決C語言中的“訪問權限沖突”異常?C語言引發異常原因分析? 在C語言中,訪問權限沖突異常通
    的頭像 發表于 01-12 16:03 ?5630次閱讀

    DC2100B/A能不能支持MATLAB/simulink自動代碼生成?

    1、硬件方面,微控制器是主要有幾種,計算能力如何,可以支持類似MPC的算法嗎?能不能擴展DSP的控制器? 2、軟件方面,能不能支持MATLAB/simulink自動代碼生成?
    發表于 01-11 06:56

    UPS電源是什么?UPS能不能帶感性負載?

    UPS電源是什么?UPS能不能帶感性負載? UPS是不間斷電源的縮寫,是一種供電設備,用于在主電源故障或電網不穩定時提供電力供應。UPS主要由直流電源、電池組、逆變器、放大器和智能電源管理芯片等組成
    的頭像 發表于 01-10 15:47 ?1438次閱讀

    pcb壓合緩沖墊,究竟能不能讓你的電路板更安全?

    pcb壓合緩沖墊,究竟能不能讓你的電路板更安全?
    的頭像 發表于 12-27 10:13 ?893次閱讀
    主站蜘蛛池模板: 欧美色妞AV重囗味视频| 欧美 亚洲综合在线一区| JizzJizzJizz亚洲成年| 亚洲 综合 欧美在线视频| 欧洲电影巜肉欲丛林| 娇小亚裔被两个黑人| 俄罗斯videosbest8| 123超碰在线视频| 亚洲精品无码午夜福利在线观看| 欧美日韩北条麻妃一区二区| 国产原创剧情麻豆在线| 99热6精品视频6| 一区二区三区内射美女毛片| 视频一区视频二区ae86| 欧美gay69| 免费国产午夜理论不卡| 精品亚洲一区二区在线播放| 电影果冻传媒在线播放| 91九色精品国产免费| 中文在线日韩亚洲制服| 亚洲三级精品| 亚洲人交性视频| 亚洲中文 字幕 国产 综合| 亚洲成人一区二区| 亚洲电影网址| 亚洲精品无夜久久久久久久久 | 啊灬啊灬啊灬快灬深高潮啦| 2021年国产精品久久| 中国老女人xxhd69| 亚洲伊人精品| 月夜直播视频免费观看| 最近中文字幕MV高清在线| 99精品免费在线观看| 扒开女生尿口| 激情床戏揉胸吃胸视频| 老师你奶真大下面水真多| 漂亮的保姆5电影免费观看完整版中文 | 男人J桶女人P视频无遮挡网站| 暖暖的视频完整视频免费韩国 | 久久精品国产亚洲AV久五月天 | xxx日本黄色|