c语言中malloc分配的空间会被别的变量再次利用吗?导致原有数据发生改...

c语言中malloc分配的空间会被别的变量再次利用吗?导致原有数据发生改变?... c语言中malloc分配的空间会被别的变量再次利用吗?导致原有数据发生改变? 展开
 我来答
d19890104
2011-09-21 · TA获得超过437个赞
知道答主
回答量:33
采纳率:0%
帮助的人:29.6万
展开全部
malloc申请的是堆空间,而变量是放在栈空间里的。所以都是指针变量指向malloc申请的空间,然后进行指针操作。
如果你用的不是指针变量,则不会导致malloc申请的空间更改。
除非是你栈空间用满了,然后侵占到堆空间了。不过这种情况下,系统早就跑飞了。
追问
我遇到一个问题是我先为一个char* s分配了一段空间,之后再为另外一个指针分配空间后,s的末尾就突然增加了一个莫名其妙的字符,比如'!"之类的,这个是什么原因呢?
追答
首先,malloc后一定要查看他的返回值是否是NULL, NULL表示失败
其次,malloc堆空间成功之后最好把这部分空间memset(p,0x0,sizeof())
第三,malloc空间是不会重叠的,如果系统没有足够的堆空间,第二次malloc时候会失败,注意检查返回值
魔群领袖
2011-09-22 · TA获得超过1523个赞
知道小有建树答主
回答量:517
采纳率:0%
帮助的人:445万
展开全部
会的,malloc 的作用是从堆中取一段内存给一个变量使用,这段内存的地址如果被别的指针所引用,当然如果是已经被malloc的且没有释放的肯定是由于 别的指针 越界操作,或者人为的故意指向这段地址去操作,这也是C语言最大的诟病和最大的魅力所在。你在java中就很难体会到这点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
韩涛董青
2011-09-21 · TA获得超过443个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:127万
展开全部
当然会了 用分配好空间的指针去初始化另一个指针 新的指针就指向了这块内存 通过新指针就可以修改这块内存了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
竟然可以七个字
2011-09-21 · TA获得超过285个赞
知道小有建树答主
回答量:233
采纳率:100%
帮助的人:172万
展开全部
事实上是很多时候没有释放导致无法再次利用该段空间,导致内存泄露。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8747532
2011-09-21 · TA获得超过162个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:123万
展开全部
在没有被释放之前是不会的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式