C语言内存管理
1.进程的内存分布
练习:编写一个程序,测试栈空间的大小
#include<stdio.h>#define SIZE 1024*1024*7void main (void)
{char buf[SIZE];buf[SIZE-1] = 100;printf("%d\n",buf[SIZE-1]);
}
如果SIZE 大小超过8M(102410248),那么执行的时候直接段错误,因为栈溢出
2.动态内存的申请(堆空间的申请和释放)
1、堆空间的申请
头文件
#include <stdlib.h>
函数原型
void *malloc(size_t size);
函数作用
用户手动申请堆空间
函数参数
size 你要申请的大小,以字节为单位
返回值
成功返回 你申请的内存空间的起始地址
失败则返回 NULL
注意: 成功申请到堆空间之后,会一直存在,如果不用了,记得要手动释放
2、堆空间的释放
头文件 #include <stdlib.h>
定义函数 void free(void *ptr);