易码技术论坛

 找回密码
 加入易码
搜索
查看: 166344|回复: 10

lavaxide 运行 和 调试的结果不一样 为什么

[复制链接]
发表于 2005-8-26 16:44:00 | 显示全部楼层
vc也是这样哦.
只要你写错了,调试和运行就可能会不一样.
 楼主| 发表于 2005-8-26 16:46:00 | 显示全部楼层
但调试是我要的
发表于 2005-8-26 16:47:00 | 显示全部楼层
记住:没有以0为结尾的就不是字符串!
好好学学吧.
 楼主| 发表于 2005-8-26 16:48:00 | 显示全部楼层
我再试试
 楼主| 发表于 2005-8-26 16:56:00 | 显示全部楼层
会不会是ram中冲突
ps我没有直接访问ram
例如
void displaymessage(int message)
  {}
调用displaymessage("abcdefg")时int message 的长度有长有短 会不会和其他char冲突
发表于 2005-8-26 17:00:00 | 显示全部楼层
你是不是memcpy了4个?
"生物"这个字符串含4个字符和一个0,所以要么strcpy,要么memcpy 5个?
Do you undetstand?
[em06]
发表于 2005-8-26 17:03:00 | 显示全部楼层
正确的写法是:
char temp[5];
strcpy(temp,"生物");
或者:
char temp[5];
memcpy(temp,"生物",5);
 楼主| 发表于 2005-8-26 17:05:00 | 显示全部楼层
你说得我明白了
but
不知哪里还有错
发表于 2005-8-26 17:08:00 | 显示全部楼层
记住:不要动不动就怀疑编译器或虚拟机,这两样犯错误的几率比程序员自己小得多.
 楼主| 发表于 2005-8-26 17:13:00 | 显示全部楼层
找到原因
memcpy到temp的string有的大于4byte
所以我把temp[5]的memset成0就行了
谢谢了
 楼主| 发表于 2005-8-26 16:43:09 | 显示全部楼层 |阅读模式

前一张是运行,后民的是调试,我没做任何修改
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-5-1 14:44 , Processed in 0.012058 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表