堆空间的开辟与使用
#define CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main0101()
{
//开辟堆空间
int*p=(int*)malloc(sizeof(int));
printf("%p\n",p);
printf("%p\n",*p);//这里没有赋值,是乱码
//使用堆空间
*p=123;
printf("%d\n",*p);
//释放堆空间;并不是直接就把堆内存进行释放掉,而是做一个标识;然后等系统需要这块内存的时候,发现是空闲的,就会进行释放
free(p);
//可以给指针变量设置为空指针
//p=NULL;
//释放后打印地址;这里的p为野指针
printf("%p\n",p);
//释放后修改值;这里操作野指针不会报错
*p=456;
printf("%d\n",*p);
return EXIT_SUCCESS;
//结果
}
int main(void)
{
//开辟10个int 类型大小的堆空间
int*p=(int*)malloc(sizeof(int)*10);
//通过指针操作堆空间
for(int i=0;i<10;i++)
{
p[i]=i;
}
for(int i=0;i<10;i++)
{
printf("%d ",*(p+i));
}
//释放堆空间
free(p);
if(!p)//p==NULL;
{
printf("程序异常\n")
return -1;
}
return 0;
//结果
}