经典的动态内存错误(上)
【摘要】 目录一、前言二、内存错误的类型 1.未判断动态内存函数的返回值造成非法访问 2.赋值的数大于申请的内存空间造成的越界访问 3.free函数未完全释放一、前言 我们在使用动态内存函数申请内存空间时,需要注意许多细节如函数的返回值,所申请空间的释放等等,我们要是忽略这些细节就容易造成程序崩溃、内存泄漏、非法访问等等一些程序问题。二、内存错误的类型1.未判断动态内存函数的返回值...
目录
一、前言
我们在使用动态内存函数申请内存空间时,需要注意许多细节如函数的返回值,
所申请空间的释放等等,我们要是忽略这些细节就容易造成程序崩溃、内存泄漏、
非法访问等等一些程序问题。
二、内存错误的类型
1.未判断动态内存函数的返回值造成非法访问
所以使用动态内存函数时应该先判断为非空指针才可以进行后续一系列操作
判断方法是
2.赋值的数大于申请的内存空间造成的越界访问
下图时非法访问的报错,虽然赋值了,但是呢那块空间本不属于我们的,但我们强行赋值,
故造成非法访问,所以我们在写代码时要格外注意申请的大小和使用的多少,
前者须大于等于后者
3.free函数未完全释放
主要原因是返回的的指针不在指向初始位置,或者说指针已经发生了变化
以下是出错报的警告(未完全释放会导致内存泄漏)
改正这个错误其实不难,因为他是不记得原来的首地址,所以我们只需要在他改变之前存下
首地址如int* ret=ptr然后释放ret就可以了.
具体如下:
写作不易,记得支持一下,欢迎各位大佬斧正
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)