zoukankan      html  css  js  c++  java
  • 堆内存和栈内存的管理

    1、堆内存

      堆内存是由程序员手工管理的,但它的申请是需要借助标准库函数。在大小上,理论上是物理内存的大小。关于堆内存的数据保存是靠程序员来管理的。由于是由程序员管理的,程序员的错误操作也导致内存的泄露和内存碎片的问题。

      关于堆内存的标准库函数(stdlib.h/malloc.h)

      void* malloc(size_t size);

      //size是以字节为单位

      //返回值是所申请到的内存的首地址

      //void* 不能直接使用,需要转换成其他有意义的才能使用。

      //在大多数情况下void*可以自转换成任意类型,但在个别情况下需要使用强制类型转换

      //malloc函数申请的内存,内容其实是随机的,需要通过那个bzero函数来将它清理为0;

      void bzero(void* s,size_t n);
           //功能是把内存清理为0,以字节为单位
           //s是内存首地址,n字节数 

       void* calloc(size_t nmemb,size_t size);
           //size是所申请内存的字节数,nmemb是申请多次size,所申请到的内存内容已经被清理为0;

      void* realloc(void* ptr,size_t size);
           //调整已经有内存的大小,可把内存调大或调小。
           //ptr是已有的内存首地址,size是调整后的大小。
           //返回值是调整后的内存首地址
       
           void free(void* ptr);
           ptr =NULL;
           //负责释放内存,释放后记得把指针置空。

    2、栈内存

      栈内存是由操作系统自己管理的,所以内存的申请和释放都是自动的。同时它的大小也是有限的,里面存放的数据也不能长久。因为是操作系统自己管理的,所以也基本不可能出现内存管理上的错误。

  • 相关阅读:
    今天的雪糕格外好吃!
    定了!对于本周四(7.16日)抽奖活动取消简要说明,新抽奖活动暂定下周三(7.22日)...
    你喜欢什么样的课堂?
    无题
    属于你们的“礼仪小课堂”
    红歌合唱之团结就是力量
    《此生未完成》痛句摘录(一)
    端午前夕的班级小游戏
    排序>插入排序 小强斋
    排序>交换排序 小强斋
  • 原文地址:https://www.cnblogs.com/yyc954330712/p/9398830.html
Copyright © 2011-2022 走看看