设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
C语言中,变量赋值后被强制修改的原因
返回列表
发新帖
C语言中,变量赋值后被强制修改的原因
[复制链接]
11
|
3
|
2013-5-16 12:56:40
|
显示全部楼层
|
阅读模式
重点就在while循环啊,你要贴出while循环内做了什么操作才行吧。一个死循环很容易内存溢出,那导致你参数值被修改了就很正常了。也就是你说的哪种情况,可能while内部对内存重新分配,覆盖了变量的地址的某一部分。有时候bug的出现有可能跟代码的关系并不是特别大,bug出现要记录bug出现的环境和测试的用例。在不能实现用户环境和没有测试用例的情况下,这种bug是很难找出或者重现的。所以其实,外人的帮助并不会很大,而是你要通过项目的了解,从而按逻辑来推测,可能出现的原因和位置,然后针对推测来做测试。这样儿才能有效的解决这类问题。我们做软件的时候最头疼的就是客户遇到bug,但是由于一些机密因素,我们没法拿到客户的环境,甚至测试的...
回复
使用道具
举报
千问
|
2013-5-16 12:56:40
|
显示全部楼层
不好查找原因的,大多都是由于其它变量进行了越界写操作。这些包括:(1)数组下标越界(2)字符串操作时没有注意末尾应有'\0'(3)指针没有赋初值(NULL)(4)memcp指定的拷贝长度超过了目标地址的空间大小等等,不一而足。gdb debug中的watch命令对这种问题比较有效。如果是在linu环境下,使用valgrind能较易...
回复
使用道具
举报
千问
|
2013-5-16 12:56:40
|
显示全部楼层
越界的可能性最大先用一个方法看是否是越界造成的,加一个全局变量,所有对该局部变量操作的地方都同样对全局变量做同样操作。这样看局部变量不正常时,全局变量值是否也不正常,如果是,那么就不是越界而是其他问题,比如哪里操作失误然后查看局部变量地址,看与他临界的变量有哪些,尤其是指针数组一类的,在仔细研究哪里会导致越界...
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行