目录
1.对NULL指针的解引用操作--error解决办法:对malloc函数的返回值进行判断
一、动态内存函数的介绍
malloc
free
calloc
realloc
以上函数的声明都在 stdlib.h 头文件中
malloc--向内存申请一块连续可用的空间,并返回指向这块空间的指针
void* malloc ( size_t size );
如果开辟成功,则返回一个指向开辟好空间的指针。
如果开辟失败,则返回一个
NULL
指针,因此
malloc
的返回值一定要做检查。
返回值的类型是
void*
,所以
malloc
函数并不知道开辟空间的类型,具体在使用的时候使用者自己
来决定。
如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。
free---专门是用来做动态内存的释放和回收
void free ( void* ptr );
如果参数
ptr
指向的空间不是动态开辟的,那
free
函数的行为是未定义的。
如果参数
ptr
是
NULL
指针,则函数什么事都不做。
int main()
{
//动态申请空间
int* p = (int*)malloc(40);
if (p == NULL)
{
perror(malloc);
return 1;
}
int i = 0;
for (i = 0; i < 10; i++)
{
*(p + i) = i;
}
//释放空间
free(p);
p = NULL;
return 0;
}