C语言--指针与堆空间

1.堆空间的本质

  --备用的“内存仓库”,以字节为单位预留的可用内存

  --程序可在需要时从“仓库”中申请使用内存(动态借)

  --当不需要再使用申请的内存时,需要及时归还(动态还)

2.void*

  --void类型时基础类型,对应的指针类型为void*

  --void*时指针类型,其指针变量能保存地址

  --但是void*指针无法获取内存中的数据(无长度信息)

  eg:int a = 0;

    int* pa = &a;

    void* pa1 = &a;

    printf("%d", *pa1);//错误

void*,不可以直接获取内存数据,void*指针可以和其他数据指针相互赋值

3.堆空间的使用

  --工具库:stdlib.h

  --申请:void* malloc(unsigned bytes)

  --归还:void free(void* p)

  eg:int* p = malloc(4);

    *p = 8;

    free(p);

小结:

  void*指针只能保存地址,无法获取内存数据

  void*指针可与其他数据指针相互赋值

  malloc申请内存后,应该判断是否申请成功

  free只能释放申请到的内存,不可以多次释放

posted @ 2023-02-12 23:14  ys_nana  阅读(30)  评论(0)    收藏  举报