我正在为以下代码获取分段错误。该程序的逻辑应该接受正确的密码("abcd"
),如果输入任何其他密码,它应该拒绝访问,但是在输入错误的密码后我仍然遇到分段错误(例如:{{1} }或"acdc"
。。我得到了"ancgff"
或"abc"
等密码的正确回复,我收到了“拒绝访问”消息。
请帮助我,无法理解为什么会收到此错误?
"xyz"
答案 0 :(得分:3)
您定义
char pin_buf[4];
预先确定的大小为4
,然后在没有任何检查的情况下使用
strcpy(pin_buf,pin);
当pin
有超过3个元素(以及终止空值)的那一刻,你将超越分配内存的边界,同时尝试复制导致undefined behavior的内容。
这就是为什么,你观察
" ...我输入错误的密码后仍然出现分段错误(例如:
"acdc"
或"ancgff"
)。我得到了{{{{{{ 1}}或"abc"
"
那就是说,你根本不需要"xyz"
。您打算执行的操作可以使用pin_buf
本身完成。