strcat有关数组设置得不够大导致的坑

2019-12-09 13:38发布

本帖最后由 costpope 于 2019-11-23 20:43 编辑

我写的一段程序数组1大约是50字节,数组2没有太在意是30字节,实际使用时就看到strcat不断在检测数组2是否到头了,(BNE 和 0x00比较)我就看见BNE比较的地址不断的在被写进新的内容,导致strcat 实际上永远读不到0x00的那个字节,然后就hard fault.

我把数组1设为150的长度,问题就解决了。
我弄不明白的是,这里面具体的细节是怎么样的,为什么会出现strcat 需要寻找‘’的地方不断被写入新的内容的现象。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
huangqi412
1楼-- · 2019-12-10 03:44
浮华一生 发表于 2019-11-24 15:24
这种不安全是哪种情况? 一般是多线程么?

主要是长度和溢出
snoopyzz
2楼-- · 2019-12-10 06:28
首先楼主要明白, str系列都是字符串操作函数, 不是数组操作函数,有本质区别.

而字符判断末尾的唯一方法就是结尾, 如果你的数组里没有, 靠增大数组解决问题完全是因为 数组你没用完的地方是空的
foxpro2005
3楼-- · 2019-12-10 11:36
这个问题我认为是LZ程序有不合理的地方造成的, 我有一个习惯一般操作时会把字符数组的最后一个元素置为'',
当然LZ这个问题也可使用strncat来解决。
wajlh
4楼-- · 2019-12-10 14:38
 精彩回答 2  元偷偷看……

一周热门 更多>