malloc、calloc、realloc的使用和区别

2018-03-20  本文已影响12人  WhiteZero

一、 malloc

1.函数原型

void *malloc(size_t size);

2.功能

  malloc()在内存的动态存储区中分配一块长度为size字节的连续区域。参数size为需要的内存空间的长度,返回该区域的地址。

3.使用
    int num = 20;
    Class *allClass = NULL;
    allClass = (__unsafe_unretained Class *)malloc(sizeof(Class) * num);
    free(allClass);

二、calloc

1.函数原型

void *calloc(size_t nmemb, size_t size);

2.功能

  calloc()与malloc()相似,参数size为申请地址的单位元素长度,nmemb为参数个数。

3.使用
    int num = 20;
    Class *allClass = NULL;
    allClass = (__unsafe_unretained Class *)calloc(num, sizeof(Class));
    free(allClass);

三、realloc

1.函数原型

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

2.功能

  realloc()是给一个已经分配了地址的指针重新分配空间,参数ptr为原有的空间地址,newsize是重新申请的地址空间。

3.使用
    int num = 20;
    Class *allClass = NULL;
    allClass = (__unsafe_unretained Class *)realloc(allClass, sizeof(Class) * num);
    free(allClass);

四、区别

上一篇 下一篇

猜你喜欢

热点阅读