C语言.内存申请malloc()

一.栈和堆的区别:
栈:
堆:

二.堆空间
①主动申请堆空间 – malloc()
#include

void *malloc(size_t size);
size:需要申请堆空间的字节数

返回值:
成功:指向申请到的这片空间的地址。
失败:NULL。

注意: The memory is not initialized.
申请到的堆空间一定是没有被初始化过的!

②主动释放堆空间 – free()
#include
void free (void *ptr)
ptr:需要释放堆空间的基地址
返回值:没有返回值

注意:
free()之后指针不会没了,变量还是那个变量,只是给系统一个标志,告诉系统这个内存区域可以被使用了,所以访问其内容是未知的。

③研究堆空间

int *p=(int *)malloc(sizeof(int)*3)    //malloc返回值为void *;类型转换
*p=10;//*p=*(p+0)=p[0];
p[1]=20;
p[2]=30;
//p[3]=40;   //访问了没有申请的内存,危险操作;
free(p);      //释放

你可能感兴趣的:(C语言学习)