zoukankan      html  css  js  c++  java
  • 栈和堆内存使用特点

    栈内存特点

    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);
    区别:可修改已分配的内存块的大小

  • 相关阅读:
    codeforces 652B z-sort(思维)
    poj 3268 Silver Cow Party(最短路)
    POJ 2243:Knight Moves(BFS)
    POJ 1107:W's Cipher(模拟)
    POJ 1008 Maya Calendar(模拟)
    Hdu3436-Queue-jumpers(伸展树)
    主席树的另一种写法
    Hdu5785-Interesting(回文串处理)
    Hdu5008-Boring String Problem(后缀数组)
    RMQ模板
  • 原文地址:https://www.cnblogs.com/xq-mys/p/9280438.html
Copyright © 2011-2022 走看看