为什么需要动态内存分配
数组存在空间容易被写死,动态内存分配能动态开辟空间大小。
所需头文件
stdlib.h
函数原型
开辟空间未初始化
- void *malloc(size_t)
开辟的是以字节为单位;
开辟的空间未初始化;
同时一定要记得检查分配是否成功;
//检查验证代码
int *p;
p = malloc(size_t);
if(p == NULL)
{
printf("分配空间失败\n");
exit(1);
}
释放空间
- void free(void *pointer)
释放的指针一定要是malloc返回的指令;
开辟空间初始化为0
- void *calloc(size_t num_elements, size_t element_size);
开辟空间并初始化为0;
修改原先已分配的内存块
- void realloc(void *ptr, size_t new_size)
内存泄漏问题
当动态分配的内存不在需要使用时,一定要记得释放,否则内存将被榨干。
注意
对NULL指针解引用会引发错误!!