动态开辟内存.md

动态开辟

  1. malloc

    void *malloc(size_t size);
    //动态开辟size个字节的空间。
    
    
  2. free

    void free(void *ptr);
    //释放所开辟的动态内存空间。
    //谁申请谁释放
    
    
  3. calloc

     void *calloc(size_t nmemb, size_t size);
     //在内存的动态存储区中肥胖nmemb个长度为size的连续空间。
     //和malloc不同的是calloc会自动初始化内存空间为零,
     //而malloc不做初始化,分配的内存空间为随机值。
     int *ptr = malloc(sizeof(int)); //分配空间
     memset(ptr,0,sizeof(int));//初始化
     //上面两句等价于calloc.
    
  4. realloc

    void *realloc(void *ptr, size_t size);
    //(数据类型)realloc(要改变内存大小的指针名,新的内存大小)
    // 新的内存大小可以比原内存大小大,也可以比原内存大小小,
    // 如果比原内存大小大,则新分配部分不会被初始化,
    // 如果比原内存要小,可能会丢失数据。
    
  5. 选择

    1.只申请一块内存空间且不需要初始化的时候用 malloc ;
    2.申请一块内存空间需要初始化的时候用 calloc ;
    3.申请一块内存空间后需要改变内存空间大小用 realloc ;
    
posted @ 2021-02-19 11:39  小浩small  阅读(61)  评论(0)    收藏  举报