zoukankan      html  css  js  c++  java
  • 内存分区

    1.栈

      局部变量

    2.堆

      程序运行时动态申请的空间

    3.BSS段

      未初始化的全局变量和静态变量

    4.数据段

      完成初始化的全局变量和静态变量,一级常量字符串,所以数据段又称为静态区

    5.代码段

      程序运行代码所占用的空间

    常见的动态分配内存分配函数

    C语言中提供了三个动态分配内存的函数:malloc、calloc 和 realloc
    
    1.malloc
        它的使用方法 void * malloc(unsigned size) ,传入一个无符号的长度,其中size是指分配内存的字节
    
        void *malloc(unsigned size),包含在库函数<stdlib.h>中,作用是在内存的堆区分配一个大小为size的连续空间,如果分配内存成功,函数返回新分配内存的首地址,否则,返回NULL 
        注意:鉴于以上这点,所以一般写程序的时候需要判断分配内存是否成功
    
        例:
        int *p ;
        p=(int* ) malloc(sizeof(int));
        if(p!=NULL)
            .....//需要执行的语句
        else
            ...//打印分配内存不成功出错信息
    
        注意: maclloc 申请的内存空间,如果我们不赋值,存放的是一些随意数(垃圾数)
        //所以有必要的时候可以给申请的空间进行初始化
         memset(p,48,16);
    
    2.calloc 
         分配指定快数和长度的内存空间   
        格式:
            calloc(快数,长度); //他们的地址也是连续的
    
        注意: calloc 是会自动帮我们初始化为0的
    
    3.realloc
          可以给已经存在的空间扩充大小
    
          格式:realloc(void*,size_t);
    
          p=realloc(p,40*sizeof(int));
      
    

    C中解决内存泄露问题

    使用free(要释放的空间的首地址)
    free(p);
    //free(p)以后,p是一个野指针
    p=NULL;才可以

      

  • 相关阅读:
    洛谷 1339 最短路
    洛谷 1330 封锁阳光大学 图论 二分图染色
    洛谷 1262 间谍网络 Tarjan 图论
    洛谷 1373 dp 小a和uim之大逃离 良心题解
    洛谷 1972 莫队
    洛谷 2158 数论 打表 欧拉函数
    洛谷 1414 数论 分解因数 水题
    蒟蒻的省选复习(不如说是noip普及组复习)————连载中
    关于筛法
    关于整数划分的几类问题
  • 原文地址:https://www.cnblogs.com/developer-wang/p/4490885.html
Copyright © 2011-2022 走看看