一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內不再提示

不停的malloc程序會異常嗎

學益得智能硬件 ? 來源:學益得智能硬件 ? 2025-01-14 09:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

把 malloc 放在死循環(huán)里面,會是什么樣的現(xiàn)象?

比如這樣的代碼,每次使用 malloc 申請 1M 大小的內存,其他什么操作也不做。

理論上來說,堆內存是有限的,如果不停的申請,遲早內存會被用完,程序應該會異常退出。

于是我找了個環(huán)境,把程序運行起來試下。

先用虛擬機,跑的一個 32 位的紅帽系統(tǒng),程序運行起來,好像只是一個普通的死循環(huán),半天也沒見他退出,而且程序也不卡頓。

看下進程的內存使用情況,數(shù)值一直都沒變。

應該可以得出結論,雖然不停的申請,但是因為內存沒有使用,所以系統(tǒng)并沒有真正的分配。

修改下代碼,申請了內存后,使用 memset 把內存初始化一下,再次運行,不一會虛擬機卡頓,直到程序被殺死。

換個環(huán)境,這次使用 64 位的Ubuntu,同樣的代碼,沒有初始化內存,運行程序,很快進程就被殺死。

運行的時候看了下內存的使用情況,確實是在快速的增長。

所以在這個環(huán)境里面,即使申請的堆內存沒有使用,系統(tǒng)也確實給分配了。

同樣是 malloc 函數(shù),不同的操作系統(tǒng),內存管理的策略也不太一樣。

#include 
#include 


int main()
{
    char *p = NULL;


    while (1) 
    {   
        p = (char *)malloc(1);


        *p = 1;
    }   


    return 0;
}

最后給大家看個筆試題,也是關于 malloc 函數(shù),運行程序,應該是個怎樣的現(xiàn)象?如果你能看出來,歡迎在評論區(qū)交流。

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

    關注

    117

    文章

    3825

    瀏覽量

    82671
  • 函數(shù)
    +關注

    關注

    3

    文章

    4376

    瀏覽量

    64530
  • malloc
    +關注

    關注

    0

    文章

    53

    瀏覽量

    208

原文標題:不停的malloc,程序會不會異常

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    stm32cubeIDE使用malloc失敗是什么原因?

    我在stm32cubeIDE環(huán)境下,已經分配了足夠的棧與堆空間,但是我在的使用malloc分配內存時,一直分配不成功,這是什么原因?
    發(fā)表于 06-09 07:24

    stm32cubeIDE使用malloc失敗是什么原因?

    我在stm32cubeIDE環(huán)境下,已經分配了足夠的棧與堆空間,但是我在的使用malloc分配內存時,一直分配不成功,這是什么原因?
    發(fā)表于 06-04 07:18

    stm32cubeIDE使用malloc失敗的原因?

    我在stm32cubeIDE環(huán)境下,已經分配了足夠的棧與堆空間,但是我在的使用malloc分配內存時,一直分配不成功,這是什么原因?
    發(fā)表于 04-27 06:45

    TJA1043的收發(fā)器,如果CAN總線出現(xiàn)異常,它會進入異常狀態(tài)嗎?

    關于 TJA1043 的收發(fā)器,如果 CAN 總線出現(xiàn)異常,它會進入異常狀態(tài)嗎?一旦處于異常狀態(tài),它的行為如何?例如,可以發(fā)送數(shù)據(jù)包但無法接收,謝謝
    發(fā)表于 04-04 07:30

    在msm8909平臺使用sn65dsi83,打開視頻數(shù)據(jù)后,不停地報中斷,怎么解決?

    我在高通msm8909平臺使用sn65dsi83這顆IC,在寫完寄存器參數(shù),PLL_LOCK后,讀取0xE5的值為0x31,enable IC 的 SW_IRQ,打開視頻數(shù)據(jù)后,不停地報中斷,讀取到的0xE5的值為0x01,請問出現(xiàn)0x01可能的原因是什么?
    發(fā)表于 12-20 11:18

    VTT供電電源變換是否導致DDR的Leveling出現(xiàn)time out的異常

    存在最大20mV的變化量,正常的時候,該值的變化量一般在幾個mV。 現(xiàn)在,想要請問下,①VTT供電電源變換是否導致 DDR 的Leveling 出現(xiàn)time out的異常?②VTT的變化范圍
    發(fā)表于 12-06 06:09

    ADS1230輸出數(shù)據(jù)不定時出現(xiàn)一個異常數(shù)據(jù),怎么回事?

    我們現(xiàn)在在使用ADS1230芯片。在使用過程中一直沒什么問題。最新一批產品出現(xiàn)了,輸出數(shù)據(jù)不定時出現(xiàn)一個異常數(shù)據(jù)的問題。換了原來的ADS1230芯片后正常。 我們抓波形發(fā)現(xiàn),這些異常數(shù)據(jù)出現(xiàn)后
    發(fā)表于 11-26 07:25

    TPA3220功放的OTW_CLIP管腳異常拉低,為什么?

    當功放的功率達到120W時,TPA3220功放的OTW_CLIP管腳異常拉低。 正常情況下FAULT和OTW_CLIP管腳均為高電平,如圖為FAULT和OTW_CLIP管腳的真值表圖, 圖為異常時抓取的波形:
    發(fā)表于 09-29 09:04

    stm32單片機燒錄程序擦除原來的程序

    在STM32單片機燒錄程序的過程中, 通常情況下擦除原來的程序 ,并將新程序寫入單片機的閃存(Flash)中。這一過程是通過燒錄工具(如ST-Link、J-Link等)實現(xiàn)的,它們負
    的頭像 發(fā)表于 09-02 09:42 ?4521次閱讀

    嵌入式C編程常用的異常錯誤處理

    嵌入式C編程中,異常錯誤處理是確保系統(tǒng)穩(wěn)定性和可靠性的重要部分。以下是一些常見的異常錯誤處理方法及其詳細說明和示例: 1. 斷言 (Assertions) 斷言用于在開發(fā)階段捕獲程序中的邏輯錯誤
    發(fā)表于 08-06 14:32

    plc突然斷電導致什么異常

    PLC(Programmable Logic Controller,可編程邏輯控制器)是一種廣泛應用于工業(yè)自動化領域的控制器。當PLC突然斷電時,可能導致一些異常情況,這些異常情況可能
    的頭像 發(fā)表于 07-25 10:11 ?2659次閱讀

    普通普普通雙電源切換開關ATS無法保證敏感負載晃電時不停機該怎么辦?

    GTS系列雙電源高速切換開關快速雙電源采用常用電源、備用電源、輸出電壓電流動態(tài)監(jiān)控技術(幅值、相位、頻率),用于系統(tǒng)綜合判斷,能主動快速構建引起電壓異常的數(shù)學模型,起動快速安全切換邏輯,確保電源異常
    的頭像 發(fā)表于 07-19 11:17 ?725次閱讀

    可以用os_malloc() 分配多少內存?有哪些限制?

    我可以用 os_malloc() 分配多少內存?有哪些限制?
    發(fā)表于 07-15 06:32

    調用os_malloc異常重啟是什么原因導致的?

    )); return node; } 明明還有足夠內存空間的情況下,為何在os_malloc分配內存里異常重啟? 下面是我的重啟時候的log:recv json{\"datetime\"
    發(fā)表于 07-12 07:47

    使用system_show_malloc()檢查內存泄漏遇到異常怎么解決?

    我想使用system_show_malloc()檢查內存泄漏,但是當我調用該函數(shù)時,我得到了致命的異常: 致命異常 28 (LoadProhibitedCause): epc1
    發(fā)表于 07-10 06:32