美文网首页
C 内存管理

C 内存管理

作者: Rokkia | 来源:发表于2017-09-01 15:54 被阅读18次

    C里比较重要的东西, 一个是指针,另外一个应该就是内存了。

    四种方法
    1.malloc
    2.calloc
    3.realloc
    4.free

    void *malloc(size_t size)

    分配空间
    特点
    1.在堆区分配一块空间 。
    2.分配空间的内容没有被初始化,也就是说有可能有的位置不是\0 。
    3.返回值为void * 也就是任意类型 可以使用 char*等进行转换 。
    4.如果size为0 则返回NULL。

    void *calloc(size_t nmemb, size_t size)

    分配空间
    特点
    1.在内存中分配一块空间。
    2.分配空间的内容会被初始化为\0
    3.把内存块分配给定大小的数组,即连续的。
    4.如果size为0 则返回NULL。

    void *realloc(void *ptr, size_t size)

    重新分配空间
    特点
    1.新开辟的内存后,会把老内存的数据复制到新内存中,同时老内存内的数据会被回收。(于是这就导致了很多不确定性。 如果新的比旧的大,就会复制完后,空余部分自动填充。如果新的比旧的小,就会只copy旧的前一部分)。
    2.如果ptr为NULL ,则realloc的作用跟malloc的作用一下。
    3.如果指定的size为0 ,则相当于调用了free(ptr)。

    void *free(void *ptr)

    释放内存
    特点
    1.释放指针ptr所指向的内存块,如果ptr为NULL,相当于什么也没做
    2.对ptr使用free()后,要及时对ptr赋值为NULL,避免野指针的出现或误操作。

    参考文章:
    [C/C++]内存分配与释放(malloc、calloc、realloc、free)
    C 内存管理

    相关文章

      网友评论

          本文标题:C 内存管理

          本文链接:https://www.haomeiwen.com/subject/enzhjxtx.html