malloc、calloc、realloc【动态内存分配】和常见错误

本文详细介绍了C/C++中动态内存管理函数malloc、calloc、realloc和free的使用,包括它们的功能、示例和常见错误。此外,文章还探讨了内存错误,如NULL指针解引用和内存泄漏,并讨论了经典笔试题目中的陷阱。最后,文章提到了柔性数组的概念及其特点。
摘要由CSDN通过智能技术生成

        在内存中有栈区、堆区、静态区,一般在函数的参数和变量都在栈区生成,但是栈区是有一定大小的,如果使用的栈区空间太多,会内存溢出。编译器也会提示把数据转到堆区存储 。堆区的大小很充裕,但是需要使用者手动申请。


一、malloc

void* malloc (size_t size);

        申请堆区的空间,函数返回申请空间的首地址,因为是void*类型,所以要强制转换成自己需要的类型。

int *a=(int *)malloc(sizeof(int)*10);

        这里申请40个字节的空间,让指针a指向这段空间。 

二、calloc

void* calloc (size_t num, size_t size);

         此函数跟malloc()函数非常类似,只不过多了一步,把申请的空间初始为了0

int a*=(int*)calloc(10,sizeof(int));

         申请40个字节的空间,并初始化,让指针a指向这个空间首地址。

三、realloc

void* realloc (void* ptr, size_t size);

          重新申请一段空间

int *p=(int*)malloc(40);
p=(int *)realloc(p,20);

         p原来有40个字节的空间,发现40个字节多了,这里重新申请了20

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值