#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
//malloc和free是c标准库中提供的两个函数,用以动态申请和释放内存
void main1()
{
//while (1)
//{
// void *p = malloc(1024 * 1024 * 100); //空类型的指针,只保存空间地址即可
// Sleep(2000);
// free(p); //根据地址释放内存空间
//}
void *p = malloc(0xffffffff - 99); //分配一块指定大小的内存空间,生成一个空类型的首地址
if (p == NULL) //检测内存是否分配,为空值则为没有分配
{
printf("内存空间不足,没有分配内存空间\n");
}
system("pause");
}
void main2()
{
int *p = (int *)malloc(sizeof(int)); //分配一个int类型元素大小(4字节)的内存空间
//生成一个空类型的首地址(空指针),强制转换为指向int类型数据的指针
//然后赋值给int类型的指针变量
*p = 100;
printf("%d\n", *p);
free(p);
//free(p); //内存不能重复释放,p指向的内存空间或许被其他变量使用或者还未进行分配
system("pause");
}
void main()
{
int num;
scanf_s("%d", &num);
int *p = malloc(sizeof(int)*num);
for (int i = 0; i < num; i++) //按照数组的方式访问内存
{
p[i] = i;
printf("%d,%x\n", p[i], p + i);
}
free(p);
system("pause");
}