内存主要分三部分空间,栈区,堆区,静态区,而动态内存函数开辟出来的内存空间是在堆区的。
栈区:局部变量,函数形参
堆区:动态内存分配的,(malloc,calloc, realloc, free)
静态区:全局变量,静态变量
malloc函数:
malloc函数如果开辟空间成功,则返回那块空间的起始地址,如果开辟空间失败(可能原因:开辟的空间太大),则返回NULL,所以要检验返回的指针,
当开辟空间成功,并使用完毕后,应尽快释放这块空间(把这块空间还给操作系统),应用free()函数释放空间,释放完毕后p就是一个野指针了,为了避免以后通过p非法访问内存,应把p置为NULL
calloc