zoukankan      html  css  js  c++  java
  • 内存管理(malloc和free的用法)

    内存管理

      1.堆和栈的区别:

        1》栈的特征

          1)、执行的速度相对较

          2)、空间较

          3)、生存期由系统决定

          4)、作用域较

          5)、有名空间,可以通过变量名或者数据名访问

        2》堆的特征

          1)、执行的速度相对较

          2)、空间较

          3)、生存期由“自己”决定,malloc申请,free释放;

          4)、作用域很大(整个程序都可以访问);

          5)、无名空间,只能通过指针使用

      

      2.如何对堆空间申请

        1》申请空间

          #include <stdlib.h>

          void *malloc(size_t size);

          功能:在堆中申请空间

          size:要申请的空间的大小(字节数)      

          返回值类型:void * 该类型表明malloc返回的地址空间中的数据类型是不确定,必须经过强制类型转换才可以使用。

          返回值:成功时,返回malloc申请的空间的起始地址,失败时,返回NULL。

          特点:----》malloc申请的空间为连续空间;

             ----》malloc申请的是没有初始化的空间;

          

          void *calloc(size_t nmemb, size_t size);

          特点:----》申请的空间是连续的;

             ----》申请的是已初始化的空间;

          void *realloc(void *ptr, size_t size);

        

         2》释放空间

            #include <stdlib.h>

            void free(void *ptr);

            参数ptr:

                1)不能传NULL;

                2)不能给ptr传申请的空间的一部分,例如:

                3)不能释放已经被释放的空间;

                4)不能使用已经被释放的空间;

  • 相关阅读:
    python之matplotlib库中pyplot的基本使用(python数据分析之绘制图形)
    小球称重问题~通过三次称重找出十二个小球质量不一样的小球,并判断小球轻重
    python爬虫—爬取英文名以及正则表达式的介绍
    Python爬取酷狗飙升榜前十首(100)首,写入CSV文件
    Requests库主要方法解析以及Requests库入门需要掌握的框架
    彻底理解Java中的21种锁!
    JavaIO流常见面试题
    Linux常用命令
    语言学习网
    类加载器的命名空间
  • 原文地址:https://www.cnblogs.com/feige1314/p/7216770.html
Copyright © 2011-2022 走看看