zoukankan      html  css  js  c++  java
  • C动态内存分配

    malloc

      void *malloc ( size_t size );

      void free ( void *pointer );

    malloc()会在堆中分配一个长度为size的连续空间,返回值为一个指向所分配的连续空间的起始地址的指针,分配失败时返回NULL指针。malloc不知道用户所请求的内存需要存储的数据类型,所以malloc返回一个void *的指针,它可以转换为其它任何类型的指针。free()释放指针所指向的内存空间,向free()传递一个NULL指针不会有任何效果。

    calloc

     void *calloc ( size_t num_elements, size_t element_size );

      calloc和malloc 主要的区别在于前者在返回内存的指针之前将它初始化为0,另外它们请求数量的方式不同。calloc的参数包括所需元素的数量和每个元素的字节,根据这些值可以计算出总共需要分配的内存空间。

    realloc

    void *realloc (void *ptr, size_t new_size )

    realloc()修改一个原先已经分配的内存块的大小,可以扩大或者缩小一块内存区域。当起始空间的地址为空,即*ptr = NULL,则同malloc。当*ptr非空:若new_size < size,即缩小*ptr所指向的内存空间,该内存块尾部的部分内存被拿掉,剩余部分内存的原先内容依然保留;若new_size > size,即扩大*ptr所指向的内存空间,如果原先的内存尾部有足够的扩大空间,则直接在原先的内存块尾部新增内存,如果原先的内存尾部空间不足,或原先的内存块无法改变大小,realloc将重新分配另一块new_size大小的内存,并把原先那块内存的内容复制到新的内存块上。

  • 相关阅读:
    从Android源码修改cpu信息
    lintcode-->翻转字符串
    lintcode-->哈希函数
    PCP架构设计
    PCP项目立项
    linux下wc功能的简单实现
    goahead3.6.3就基本使用(后台上传信息到html页面),高手请忽略
    四则运算生成器
    快速看完软件工程教材后,我的疑惑
    软件工程学习
  • 原文地址:https://www.cnblogs.com/larry-xia/p/11163399.html
Copyright © 2011-2022 走看看