常用函数小结(动态储存)

头文件 #include <stdlib.h>

1、malloc函数   void *malloc(size_t size)

    分配所需的内存空间,并返回一个指向它的指针。分配一块内存(连续的)供使用,并返回首地址的指针。

2、calloc函数     void *calloc(size_t nitems, size_t size)

     nitems 要被分配的元素的个数;size 要被分配的元素的大小。

     分配所需的内存空间,并返回一个指向它的指针。

     注意:malloc 和 calloc 之间的不同点是,malloc 不会设置内存为零,而 calloc 会设置分配的内存为零。

3、realloc函数      void *realloc(void *ptr, size_t size) 

       尝试重新调整之前调用 malloc 或 calloc 所分配的 ptr 所指向的内存块的大小。

       ptr -- 指针指向一个要重新分配内存的内存块,该内存块之前是通过调用 malloc、calloc 或realloc 进行分配内存的。如果为空指针,则会分配一个新的内存块,且函数返回一个指向它的指针。(必须是之前通过malloc或calloc或realloc函数分配的内存,即堆区内存)

       size -- 内存块的新的大小,以字节为单位。如果大小为 0,且 ptr 指向一个已存在的内存块,则 ptr 所指向的内存块会被释放,并返回一个空指针。(可以用来释放内存)

       注:不会清除之前数组中已有的数据。且若缩小内存,之前的数据也不会丢掉,因为realloc函数不重新分配内存,只是把原内存块扩大到参数指定大小,返回的还是原内存地址,除非重新分配内存为0,即free内存。(重要!!!)

4、free函数  void free(void *ptr) 

      释放之前调用 calloc、malloc 或 realloc 所分配的内存空间。

      用完内存后释放内存是个好习惯哦~

----------------------------------------------------------------------------------------------------------------------------

下面是今天我收获的一个小教训(使用函数易错案例)

头文件#include <string.h>

void * memset(void *s, int c, unsigned long n);

将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。

memset 函数的第三个参数 n 的值一般用 sizeof()  获取,这样比较专业。注意,如果是对指针变量所指向的内存单元进行清零初始化,那么一定要先对这个指针变量进行初始化,即一定要先让它指向某个有效的地址。而且用memset给指针变量如p所指向的内存单元进行初始化时,n 千万别写成 sizeof(p),这是新手经常会犯的错误。因为 p 是指针变量,不管 p 指向什么类型的变量,sizeof(p) 的值都是 4。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值