0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

不停的malloc程序会异常吗

学益得智能硬件 来源:学益得智能硬件 2025-01-14 09:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

把 malloc 放在死循环里面,会是什么样的现象?

比如这样的代码,每次使用 malloc 申请 1M 大小的内存,其他什么操作也不做。

理论上来说,堆内存是有限的,如果不停的申请,迟早内存会被用完,程序应该会异常退出。

于是我找了个环境,把程序运行起来试下。

先用虚拟机,跑的一个 32 位的红帽系统,程序运行起来,好像只是一个普通的死循环,半天也没见他退出,而且程序也不卡顿。

看下进程的内存使用情况,数值一直都没变。

应该可以得出结论,虽然不停的申请,但是因为内存没有使用,所以系统并没有真正的分配。

修改下代码,申请了内存后,使用 memset 把内存初始化一下,再次运行,不一会虚拟机卡顿,直到程序被杀死。

换个环境,这次使用 64 位的Ubuntu,同样的代码,没有初始化内存,运行程序,很快进程就被杀死。

运行的时候看了下内存的使用情况,确实是在快速的增长。

所以在这个环境里面,即使申请的堆内存没有使用,系统也确实给分配了。

同样是 malloc 函数,不同的操作系统,内存管理的策略也不太一样。

#include 
#include 


int main()
{
    char *p = NULL;


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


        *p = 1;
    }   


    return 0;
}

最后给大家看个笔试题,也是关于 malloc 函数,运行程序,应该是个怎样的现象?如果你能看出来,欢迎在评论区交流。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序
    +关注

    关注

    117

    文章

    3836

    浏览量

    84762
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66837
  • malloc
    +关注

    关注

    0

    文章

    53

    浏览量

    345

原文标题:不停的malloc,程序会不会异常

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C++程序异常的处理机制

    1、什么是异常处理? 有经验的朋友应该知道,在正常的C和C++编程过程中难免碰到程序不按照原本设计运行的情况。 最常见的有除法分母为零,数组越界,内存分配失效、打开相应文件失败等等。 一个
    发表于 12-02 07:12

    为什么单片机中很少使用malloc,而PC程序频繁使用呢?

    、工业应用、汽车电子等相关的应用,程序的执行必须具备高实时性和高确定性。动态内存分配(如 malloc)的延迟是不确定的,可能因为内存分配失败或内存碎片问题导致程序的执行时间不稳定,
    发表于 11-20 06:55

    交流不停电电源ups应满足哪些条件?

    交流不停电电源(UPS)作为关键设备的“电力守护者”,需满足多维度技术指标与场景适配性要求。以下从核心性能、安全可靠性、智能管理、环境适应性四大维度,结合优比施的专业实践,系统解析UPS应满足的条件
    的头像 发表于 11-12 09:10 160次阅读
    交流<b class='flag-5'>不停</b>电电源ups应满足哪些条件?

    电能质量在线监测装置突跳异常数据修吗?

    电能质量在线监测装置的突跳异常数据通常会通过 自动修复机制 和 人工干预 相结合的方式进行处理,但具体修复能力取决于设备配置、异常类型及平台功能。以下是详细说明: 一、自动修复机制 现代高端监测装置
    的头像 发表于 11-05 14:07 278次阅读

    电能质量在线监测装置异常数据自动修复吗?

    电能质量在线监测装置对异常数据的处理能力取决于具体技术方案和异常类型。现代高端装置通常具备有限的自动修复能力,但需结合人工审核和硬件维护,形成 “自动修复 + 人工干预” 的闭环管理体系。以下
    的头像 发表于 10-15 16:07 152次阅读

    RT-Thread Studio CH32V307工程,程序运行异常怎么解决?

    RT-Thread Studio CH32V307 工程历程程序运行异常,官方的EVT历程使用是OK的,没人维护吗?
    发表于 10-13 06:36

    rt_malloc_align函数内存越界问题怎么解决?

    void *rt_malloc_align(rt_size_t size, rt_size_t align) { void *align_ptr; void *ptr; rt_size_t
    发表于 09-22 08:30

    机器学习异常检测实战:用Isolation Forest快速构建无标签异常检测系统

    本文转自:DeepHubIMBA无监督异常检测作为机器学习领域的重要分支,专门用于在缺乏标记数据的环境中识别异常事件。本文深入探讨异常检测技术的理论基础与实践应用,通过IsolationForest
    的头像 发表于 06-24 11:40 1197次阅读
    机器学习<b class='flag-5'>异常</b>检测实战:用Isolation Forest快速构建无标签<b class='flag-5'>异常</b>检测系统

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

    我在stm32cubeIDE环境下,已经分配了足够的栈与堆空间,但是我在的使用malloc分配内存时,一直分配不成功,这是什么原因?
    发表于 06-09 07:24

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

    我在stm32cubeIDE环境下,已经分配了足够的栈与堆空间,但是我在的使用malloc分配内存时,一直分配不成功,这是什么原因?
    发表于 06-04 07:18

    6.18年终狂欢购!满额即赠,惊喜享不停!

    6.18年终狂欢购!满额即赠,惊喜享不停!
    的头像 发表于 05-30 18:04 496次阅读
    6.18年终狂欢购!满额即赠,惊喜享<b class='flag-5'>不停</b>!

    stm32cubeIDE使用malloc失败的原因?

    我在stm32cubeIDE环境下,已经分配了足够的栈与堆空间,但是我在的使用malloc分配内存时,一直分配不成功,这是什么原因?
    发表于 04-27 06:45

    散热设计与测试:PCBA异常发热的解决之道

    在电子设备的生产和测试过程中,PCBA(印制电路板组装)异常发热是一个常见且棘手的问题。过高的温度不仅影响设备的性能,还可能导致元器件损坏甚至设备报废。因此,快速定位发热原因并采取有效的解决措施
    的头像 发表于 04-10 18:04 1230次阅读

    TJA1043的收发器,如果CAN总线出现异常,它会进入异常状态吗?

    关于 TJA1043 的收发器,如果 CAN 总线出现异常,它会进入异常状态吗?一旦处于异常状态,它的行为如何?例如,可以发送数据包但无法接收,谢谢
    发表于 04-04 07:30

    在msm8909平台使用sn65dsi83,打开视频数据后,不停地报中断,怎么解决?

    我在高通msm8909平台使用sn65dsi83这颗IC,在写完寄存器参数,PLL_LOCK后,读取0xE5的值为0x31,enable IC 的 SW_IRQ,打开视频数据后,不停地报中断,读取到的0xE5的值为0x01,请问出现0x01可能的原因是什么?
    发表于 12-20 11:18