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