• 堆内存管理


    堆内存管理
    malloc必须与free()成对出现

    ** malloc函数:**向堆空间申请变量或数组,malloc函数向堆上申请一个整型变量;堆上面的变量没有名字,只有地址;

    堆(heap )区空间大,栈(stack)区空间小,栈内存存放的是地址,而堆内存存放的才是对象

    管理方式:
    对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory
    栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域

    堆:堆是向高地址扩展的数据结构,是不连续的内存区域。
    分配方式:
    堆都是动态分配的,没有静态分配的堆。

    栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由alloca函数进行分配,但是栈的动态分配和堆是不同的,他的动态分配是由编译器进行释放,无需我们手工实现。

    ** free函数:**将申请的变量或数组的空间换回给堆,将申请的变量还回给堆,不会造成内存泄露

    calloc函数:与malloc函数的唯一区别:calloc申请的堆空间释放后内存空间清0,所以效率较低;malloc函数不会清0

    **realloc函数: **函数用来为ptr重新分配大小为size的一块内存
    扩容时,原来的数据不会丢失
    思考:如何接收任意多个字符?

    成功的三大原则: 1、坚持 2、不要脸 3、坚持不要脸
  • 相关阅读:
    asp.net cookie的操作,写入、读取与操作
    JS控制表格隔行变色
    JS创建select的optgroup
    sitemap文件写法详解及参数说明
    IIS7 URL Rewrite Module Configuration Reference
    Asp.net 中文件的下载
    Context的一些简单运用
    QQ web api
    div下图片自适应解决方法
    C#中文分词算法:ChineseAnalyzer
  • 原文地址:https://www.cnblogs.com/xulinmei/p/7413521.html
Copyright © 2020-2023  润新知