最近,代码除了一个问题,就是调用strcpy的时候,程序飞掉了。经过跟踪,发现了一个问题,就是strcpy在这里不能使用。应该使用memcpy才可以,那么,strcpy和memcpy 的一个最主要区别是什么呢?
看一下下面的例子,估计大家就明白了。
char temp[10] = {0};
char *tempOrg = "1234567890";
strcpy(temp, tempOrg); //会是一个未定义的现象哟,应为已经越界了!!!
memcpy(temp, tempOrg, strlen(tempOrg));//这样就刚好拷贝完成。
这里提醒大家,不要认为所有的字符串都用strcpy就可以了,大家都知道,所有的字符串是以字符0为结束符的,因此使用strcpy不会有人和问题,但是,要考虑到,有的厂商提供给你的东西并没有考虑这些因素。
例如Asn语言转换为C++结构的诸多工具中,都没有进行这样的考虑,因此,此时,如果你使用strcpy,祸害无穷呀,因此,什么时间使用strcpy,什么时间考虑memcpy,要注意呀。
本文通过一个具体例子展示了在处理固定大小字符数组时,使用strcpy可能导致的越界问题,并推荐使用memcpy来避免此类错误。
8325

被折叠的 条评论
为什么被折叠?



