记malloc函数和calloc函数

malloc函数申请所申请的内存是从其他不需要的内存中申请过来的,内存中的数据是随机的。
而calloc函数所申请内存中的数据是零的,calloc相当于malloc+memset。
当然,既然有calloc函数,为什么还要用malloc函数呢?因为在用户空间申请内存时,有很多情况下是不需要将内存中的数据置零的。所以在想让申请的内存数据为零就用calloc函数吧。
注意:在申请内存用完需要释放时,一定要记得释放,否则会造成内存泄露。释放之后一定要将定义的指针指向NULL,否则会造成野指针。所以,如果经常忘记释放的话,尽量使用定义一个变量的方式去使用一块内存。
另,如果在使用malloc函数时将参数赋值0的话会如何呢?
测试用例:

#include <stdio.h>
#include <malloc.h>
int main()
{
        unsigned int * p = NULL;
        p = (unsigned int *)malloc(0);
        if(p)
                printf("malloc sucess.\n");
        else
                printf("malloc failed.\n");
        if(*p)
                printf("!0 value\n");
        else
                printf("0 value\n");
        free(p);
        return 0;
}

竟然申请成功了!???
在这里插入图片描述
而且内存的值还是零,额,(打脸)我不写了,去百度吧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值