动态内存管理(中)

本文详细介绍了动态内存管理中常见的错误,包括空指针处理、越界访问、误释放非动态内存、部分释放、多次释放和内存泄漏。强调了在使用malloc,realloc,calloc和free函数时的注意事项。

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

动态内存管理(上)-优快云博客(malloc, realloc, calloc, free函数的用法以及注意事项等知识点)

目录

1.对空指针的解引用操作

 2.对动态开辟空间的越界访问

3.对非动态内存开辟空间使用free空间释放

 4.使用free释放动态开辟空间的一部分

5.对同一块内存的多次释放

6.动态内存空间忘记释放


另外动态内存管理因为涉及到了内存的问题, 所以很容易出错,本节回顾容易出错的点。

1.对空指针的解引用操作

这个问题通常出现在向堆区申请空间时, 假如空间不够, 返回空指针,如果没有进行判断的话, 就容易出现这种情况。 如:

这里就没有进行判断, 直接使用的话就会出问题。

 2.对动态开辟空间的越界访问

3.对非动态内存开辟空间使用free空间释放

虽然c语言对于free释放非动态内存空间是未定义的。 但是这种用法是错误的。 

通常我们在学习数据结构时, 使用栈或者队列的时候, 很容易混淆栈或者顺序表哪个先释放, 那个能释放。 存储栈的空间是不用释放的。 而栈所指向的动态内存开辟出的空间是需要释放的。

 4.使用free释放动态开辟空间的一部分

注意这类问题容易忽略, free释放内存时, 是从指针指向位置开始,向后访问释放。所以假如一个指针不能指向想要释放空间的起始位置, 那么他就不能将空间进行全部释放。 

5.对同一块内存的多次释放

6.动态内存空间忘记释放

导致内存泄漏的直接原因。 如果一个程序一直运行的同时只开辟空间,不释放空间。 那么内存很容易就不足。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值