程序中内存从哪里来-堆内存
堆内存详解:
1. 操作系统对内存管理器:堆管理器是操作系统的一个模块,堆管理器内存分配灵活,按需分配。
2. 大块内存:堆内存内存管理器者总量很大的操作系统内存块,各个进程可以按需申请使用,使用完之后手动释放。
3. 脏内存:堆内存也是反复使用的,而且使用这用完释放前不会清楚,因此堆内存也是脏的。
4. 临时性:堆内存只在malloc和free之间属于我这个进程,而且是可以访问的。在malloc之前和free之后都不能再访问,否则会有不可预料的后果。
在程序中堆内存是使用:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int main(void)
{
int size = 10 ;
int* p = (int*)malloc(size * sizeof(int)); //申请堆内存
if (p == NULL)
{
printf("堆内存申请失败");
return -1;
}
//数据写入堆内存
for(int i = 0;i< 10;i++)
{
*(p + i) = i;
}
//打印出堆存储是数值
for (int i = 0; i < 10; i++)
{
printf("%d\n", *(p + i));
}
free(p); //释放堆内存;
p = NULL;
return 0;
}