1.malloc函数
//使用步骤
int* ptr = (int*)malloc(num*sizeof(int));
//判断申请空间是否成功
if(NULL != ptr)
//手动释放空间
free(ptr);
2.calloc函数
//void* calloc (size_t num, size_t size);
int *p = calloc(10, sizeof(int));
与malloc的区别是,calloc函数用0初始化申请空间的参数。
3.realloc函数
到对动态开辟内存大小的调整
void* realloc (void* ptr, size_t size);
//正确使用
int* new_tmp = (int*)realloc(ar,sizeof(int)*n);
//防止申请不成功,ar返回NULL
if(nem_tep!=NULL)
ar=new_tep;
//若ar未接收, int* new_tmp,只须
free(new_tmp);
3.异常
(1)不能对空指针进行解引用
(2)传地址!=传指针
//函数引用传参
void Get(char **p)
{
*p=(char*)malloc(100);
}
//主函数中传参
Get(&str);
(3)释放空间!=释放指针
仅释放空间,出现野指针指向非法空间,应str=NULL;
4.柔性数组
(1)不占空间(结构体内)
(2)结构中的柔性数组成员前面必须至少一个其他成员