堆空间的开辟与使用

#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;

//结果

 

 

}

posted @ 2020-09-09 20:34  wh19991213  阅读(528)  评论(0编辑  收藏  举报