一.动态内存管理函数简介
1.malloc()函数
malloc()函数使用形式如下:
void* malloc (size_t size)
其作用是在内存的堆区中申请size个字节的空间(该空间的每一个bit位的值是随机的),并返回一个指向该空间起始位置的指针,如果申请失败则返回NULL指针。
例如:
int* p = (int*)malloc(10*sizeof(int));
指向内存申请40个字节空间,并返回一个被强制类型转换成int型的该空间起始位置的地址赋给int型的指针变量p。
2.calloc()函数
calloc()函数使用形式如下:
void* calloc (size_t num, size_t size)
其作用是在内存中的堆区为一个有num个元素的数组,每个元素是size个字节大小的数组申请空间(该空间的每一个bit位的值都被初始化为0),并返回一个指向该空间起始位置的指针,如果申请失败则返回NULL指针。
例如:
int* p = (int*)calloc(10, sizeof(int))
指向内存申请40个字节空间并把这块空间的所有内容全部初始化为0,然后返回一个被强制类型转换成int型的该空间起始位置的地址赋给int型的指针变量p。
因此calloc==malloc+初始化为0.
3.realloc()函数
realloc()函数的使用形式如下:
void* realloc (void* ptr, size_t size)
其作用是改变由ptr所指向的在内存中堆区的空间为size个字节大小
如果后面的空间足够大就扩容并返回原地址;
如果后面的空间不够大就新开辟一块空间,把旧空间的数据拷贝过来,再把旧空间释放,最后返回新开辟空间的起始地址;
如果realloc()开辟失败则返回NULL指针。
例如:
int* p = (int*)malloc(40