某日小二参加XXX科技公司的C++工程师开发岗位4面:
面试官:memset、memcpy和strcpy的区别是什么?
小二:memset用于将一块内存设置为特定的值,
memcpy用于将一块内存从一个位置复制到另一个位置,
strcpy用于将一个字符串从一个位置复制到另一个位置。
面试官:嗯,不错。那么你知道这三个函数在使用时要注意哪些问题吗?
小二:呃。。。
面试官:好的,回去等通知吧。
这三个函数在C/C++开发中用到的频率比较高。
memset函数常用于POD类型对象的初始化,一般第二个参数都是0,第三个参数是这段内存的长度。
memcoy函数需要注意的点是,函数传入的源位置和目标位置不能有重叠,否则这种操作引发的结果无法预知。如果你不能够确定传入的源位置和目标位置是否存在重叠,那么可以使用memmove函数代替memcoy。
strcpy存在另一个问题,那就是源字符串的长度可能大于目标区域的长度,导致目标区域内存被超写,造成不可预知的错误。当然也可以通过使用strncpy函数传入目标区域的大小-1,如果源字符串的长度小于目标区域的大小-1,则全部拷贝,否则最多只拷贝目标长度-1的内容,保证目标字符串以0结尾。
小伙伴们,如果你是小二,你能比小二回答的更好吗?
标签:八股文,字节,位置,C++,目标,内存,长度,函数 From: https://www.cnblogs.com/binarch/p/17455009.html