堆空间的开辟与使用

#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 ",p);

  printf("%p ",*p);//这里没有赋值,是乱码

//使用堆空间

  *p=123;

  printf("%d ",*p);

//释放堆空间;并不是直接就把堆内存进行释放掉,而是做一个标识;然后等系统需要这块内存的时候,发现是空闲的,就会进行释放

  free(p);

//可以给指针变量设置为空指针

  //p=NULL;

//释放后打印地址;这里的p为野指针

  printf("%p ",p);

//释放后修改值;这里操作野指针不会报错

  *p=456;

  printf("%d ",*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("程序异常 ")

    return -1;

  }

  return 0;

//结果

}

原文地址:https://www.cnblogs.com/wanghong19991213/p/13641608.html