学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

327

积分

0

好友

41

主题
发表于 前天 14:35 | 查看: 28| 回复: 0
本帖最后由 jinchanchan 于 2025-1-6 14:36 编辑

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


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。

小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

GMT+8, 2025-1-8 11:07 , Processed in 0.219986 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表