• 栈和堆内存使用特点


    栈内存特点

    1、空间实现自动管理:运行时空间自动分配,运行结束空间自动回收,栈被称为自动管理区;
    2、能够被反复使用:占内存在程序中都是一块内存空间,程序通过自动开辟和自动释放,会反复使用这一块空间;
    3、脏内存:栈内存由于反复使用,每次使用后程序不会自动去清空内容,下一次该空间再次被分配时,上一次使用的值还在;
    4、临时性:函数不能返回栈变量的指针,因为这个空间在函数运行结束后会被释放。

    堆内存特点

    1、灵活:堆是另一种管理形式的内存区域,堆内存的管理灵活;
    2、内存量大:堆内存空间很大,可以按需申请;
    3、程序手动申请和释放:如申请malloc释放free;
    4、脏内存:与栈内存相同;
    5、临时性:堆内存只在malloc后free前的期间才可被访问;
    6、如果未及时释放申请的内存空间,会造成内存泄漏(内存名存实亡)。

    附malloc、calloc、realloc使用方法和区别

    1.malloc:
    使用:void *malloc(size_t size);
    注:空间申请成功后返回空间首字节地址,申请失败则返回NULL,因此使用malloc时一定要检查是否为NULL;malloc(4)默认最小以16B为单位进行空间分配。
    区别:只能动态申请固定大小的内存
    2.calloc:
    使用:void *calloc(size_t nmemb, size_t size);
    区别:动态申请固定大小的内存且返回内存初始化为0
    3.realloc:
    使用:void *realloc(void *ptr, size_t size);
    区别:可修改已分配的内存块的大小

  • 相关阅读:
    Android Service
    Java 关键字 static final
    Django | mysql修改个别表后save()报错
    Django | Unable to get repr for <class 'django.db.models.query.QuerySet'>
    MySQL | linux中数据库导出和导入
    MySQL | 查看log日志
    python | log日志
    python | 网络编程(socket、udp、tcp)
    Python | 异常处理
    Python | 单例模式
  • 原文地址:https://www.cnblogs.com/xq-mys/p/9280438.html
Copyright © 2020-2023  润新知