C语言中动态内存管理函数malloc(),calloc(),realloc(),free()函数及其常见使用错误详解

本文详细介绍了C语言中动态内存管理的四个关键函数:malloc(), calloc(), realloc(), free(),并列举了使用这些函数时常见的错误,包括对NULL指针的解引用、越界访问、对非动态内存使用free释放、部分释放内存、重复释放和内存泄漏等问题。" 133669954,19694561,使用PyQt5创建带标签的复选框教程,"['PyQt5', 'GUI开发', 'Python编程', '用户交互', '桌面应用']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.动态内存管理函数简介

1.malloc()函数

malloc()函数使用形式如下:
void* malloc (size_t size)
其作用是在内存的堆区中申请size个字节的空间(该空间的每一个bit位的值是随机的),并返回一个指向该空间起始位置的指针,如果申请失败则返回NULL指针。
例如:

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

指向内存申请40个字节空间,并返回一个被强制类型转换成int型的该空间起始位置的地址赋给int型的指针变量p。

2.calloc()函数

calloc()函数使用形式如下:
void* calloc (size_t num, size_t size)
其作用是在内存中的堆区为一个有num个元素的数组,每个元素是size个字节大小的数组申请空间(该空间的每一个bit位的值都被初始化为0),并返回一个指向该空间起始位置的指针,如果申请失败则返回NULL指针。
例如:

	int* p = (int*)calloc(10, sizeof(int))

指向内存申请40个字节空间并把这块空间的所有内容全部初始化为0,然后返回一个被强制类型转换成int型的该空间起始位置的地址赋给int型的指针变量p。
因此calloc==malloc+初始化为0.

3.realloc()函数

realloc()函数的使用形式如下:
void* realloc (void* ptr, size_t size)
其作用是改变由ptr所指向的在内存中堆区的空间为size个字节大小
如果后面的空间足够大就扩容并返回原地址;
如果后面的空间不够大就新开辟一块空间,把旧空间的数据拷贝过来,再把旧空间释放,最后返回新开辟空间的起始地址;
如果realloc()开辟失败则返回NULL指针。
例如:

int* p = (int*)malloc(40
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值