堆 heap & 栈 stack
stack 里存放局部变量、形参等,由系统自动分配内存空间并释放,不由程序员控制。
heap 里存放的由动态内存分配函数分配的,动态内存的生存期由程序员控制。
动态内存分配函数
#include<stdlib.h>
void* malloc(unsigned int size);
//申请size大小的内存块,返回首地址,失败返回NULL
void* calloc(unsigned int num, unsigned int size);
//申请num个size大小的内存块,返回首地址,失败返回NULL
size=sizeof(数据类型)
//例子 申请十个整数空间
int *p=(int*)malloc(10*sizeof(int));//强制类型转换到int*
if(p==NULL){
printf("内存分配失败");
return -1;
}
动态内存释放函数
void free(void* p); // free(p);
p=NULLl;