什么是C语言中内存溢出?关于malloc函数的~

 我来答
超祥生0v
2013-10-20 · 超过54用户采纳过TA的回答
知道答主
回答量:179
采纳率:0%
帮助的人:56.4万
展开全部
malloc()函数开辟的内存空间系统是不会自动释放的,与普通定义的数据变量不一样,所以得在程序里,手动写free()函数释放内存空间,
如果不写free函数释放malloc()函数开辟的内存空间的话,系统中无效的内存空间会越积越多,到达一定数量后内存就不够用了,这就是所说的内存溢出。
风若远去何人留
2015-10-19 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部
malloc是C语言的动态内存分配函数,声明与malloc.h。由于stdlib.h中引用了malloc.h,所以在代码中引用malloc.h或stdlib.h均可。声明形式为
void * malloc(int size);
功能为申请一段长度为size字节的内存,并将内存的首地址返回,该返回值一般保存在指针变量中。后续对指针按照偏移量访问,可以实现访问对应元素的效果。
而在C语言中,访问指针时,并不会对偏移量是否合法做判断,这样在编程不严谨甚至错误时,就有可能访问超出合法范围的元素。
比如申请了100个字节的空间,却访问了第101个字节,这种超出合法范围的访问就称为内存溢出。
由于内存是动态分配的,所以无法预知溢出部分内存是何种作用,所以内存溢出会导致不可预知的后果,可能是某个运算出错,甚至整个程序崩溃,同样也可能出现完全没有影响。
由于内存溢出的不确定性,现象也多种多样,导致内存溢出后,程序问题点定位和修改均很繁琐,所以最好的方法是在代码构建阶段着重注意内存访问的限制,确保不会出现溢出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式