某日小二加入XXX科技公司的C++工程师开发岗位4面:
面试官:memset、memcpy和strcpy的区别是什么?
小二:memset用于将一块内存设置为特定的值,
memcpy用于将一块内存从一个地位复制到另一个地位,
strcpy用于将一个字符串从一个地位复制到另一个地位。
面试官:嗯,不错。那么你晓得这三个函数在应用时要留神哪些问题吗?
小二:呃。。。
面试官:好的,回去等告诉吧。
这三个函数在C/C++开发中用到的频率比拟高。
memset函数罕用于POD类型对象的初始化,个别第二个参数都是0,第三个参数是这段内存的长度。
memcoy函数须要留神的点是,函数传入的源地位和指标地位不能有重叠,否则这种操作引发的后果无奈预知。如果你不可能确定传入的源地位和指标地位是否存在重叠,那么能够应用memmove函数代替memcoy。
strcpy存在另一个问题,那就是源字符串的长度可能大于指标区域的长度,导致指标区域内存被超写,造成不可预知的谬误。当然也能够通过应用strncpy函数传入指标区域的大小-1,如果源字符串的长度小于指标区域的大小-1,则全副拷贝,否则最多只拷贝指标长度-1的内容,保障指标字符串以0结尾。
小伙伴们,如果你是小二,你能比小二答复的更好吗?
关注我,带你21天“精通”C++!(狗头)