某日小二参加XXX科技公司的C++工程师开发岗位4面:

面试官:memset、memcpy和strcpy的区别是什么?

小二:memset用于将一块内存设置为特定的值,

memcpy用于将一块内存从一个位置复制到另一个位置,

strcpy用于将一个字符串从一个位置复制到另一个位置。

面试官:嗯,不错。那么你知道这三个函数在使用时要注意哪些问题吗?

小二:呃。。。

面试官:好的,回去等通知吧。

这三个函数在C/C++开发中用到的频率比较高。

memset函数常用于POD类型对象的初始化,一般第二个参数都是0,第三个参数是这段内存的长度。

memcoy函数需要注意的点是,函数传入的源位置和目标位置不能有重叠,否则这种操作引发的结果无法预知。如果你不能够确定传入的源位置和目标位置是否存在重叠,那么可以使用memmove函数代替memcoy。

strcpy存在另一个问题,那就是源字符串的长度可能大于目标区域的长度,导致目标区域内存被超写,造成不可预知的错误。当然也可以通过使用strncpy函数传入目标区域的大小-1,如果源字符串的长度小于目标区域的大小-1,则全部拷贝,否则最多只拷贝目标长度-1的内容,保证目标字符串以0结尾。

小伙伴们,如果你是小二,你能比小二回答的更好吗?

C++面试八股文:指针占用多少个字节?的更多相关文章

  1. Java中boolean类型占用多少个字节?我说一个,面试官让我回家等通知

    摘自:https://www.cnblogs.com/qiaogeli/p/12004962.html 程序员乔戈里 腾讯面试官问我Java中boolean类型占用多少个字节?我说一个,面试官让我回家 ...

  2. 《面试八股文》之 JVM 20卷

    微信公众号:moon聊技术 关注选择" 星标 ", 重磅干货,第一 时间送达! [如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发] 大家好,我是 moon. <面试八股 ...

  3. 一天吃透JVM面试八股文

    什么是JVM? JVM,全称Java Virtual Machine(Java虚拟机),是通过在实际的计算机上仿真模拟各种计算机功能来实现的.由一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆和一 ...

  4. 《面试八股文》之 Redis 16卷

    微信公众号:moon聊技术 关注选择" 星标 ", 重磅干货,第一 时间送达! [如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发] 大家好,我是 moon. redis 作为 ...

  5. Oracle一个中文汉字占用几个字节

    Oracle 一个中文汉字 占用几个字节,要根据Oracle中字符集编码决定   查看oracle server端字符集 select userenv('language') from dual; 如 ...

  6. Java中char占用几个字节

    在讨论这个问题之前,我们需要先区分unicode和UTF. unicode :统一的字符编号,仅仅提供字符与编号间映射.符号数量在不断增加,已超百万.详细:[https://zh.wikipedia. ...

  7. Java中boolean类型占用多少个字节

    为什么要问这个问题,首先在Java中定义的八种基本数据类型中,除了其它七种类型都有明确的内存占用字节数外,就boolean类型没有给出具体的占用字节数,因为对虚拟机来说根本就不存在 boolean 这 ...

  8. Java中的char占用几个字节

    目录 1.概述 2.答疑 3.总结 1.概述 网上或书上都说是Java中的char占用2个字节,一直没有深入,直到接触了编码,才对此产生了疑问,今天来深入一下这个问题. 2.答疑 char在设计之初的 ...

  9. Oracle 一个中文汉字 占用几个字节,由Oracle中字符集编码决定

    Oracle 一个中文汉字 占用几个字节,要根据Oracle中字符集编码决定 查看oracle server端字符集 select userenv('language') from dual; 如果显 ...

  10. 【C++】一个指针占几个字节?为什么呢?

    一个指针在32位操作系统上,占4个字节 一个指针在64位操作系统上,占8个字节 但是,编译器为了兼容32位操作系统和64位操作系统,所以指针都是4个字节长度 为什么呢? 在计算机中,CPU不能直接与硬 ...

随机推荐

  1. buuctf-RE-SimpleRev

    IDA 打开 将main函数反编译为C代码 1 int __cdecl __noreturn main(int argc, const char **argv, const char **envp) ...

  2. Hive 和 Spark 分区策略剖析

    作者:vivo 互联网搜索团队- Deng Jie 随着技术的不断的发展,大数据领域对于海量数据的存储和处理的技术框架越来越多.在离线数据处理生态系统最具代表性的分布式处理引擎当属Hive和Spark ...

  3. Java 生成海报

    最近项目有个功能是生成海报 一个背景图片,一个二维码图片 将两个图片合并成一个图片. 写了一个工具类,需要的朋友自取. 1 @Component 2 public class PictureUtil ...

  4. 用CMD或者bat修改host文件

    第一行代码标识 取消host的只读属性 第二行写入 attrib -R C:\WINDOWS\system32\drivers\etc\hosts @echo 127.0.0.1 baidu.com ...

  5. 20130625-关于mac配置android cocos2dx

    1.下载cocos2dx  ndk  eclipse http://developer.android.com/tools/sdk/ndk/index.html 2.cocos2dx文件中找到crea ...

  6. 1778D Flexible String Revisit

    1778D Flexible String Revisit 目录 1778D Flexible String Revisit 题目大意: 做法: dp 注意 code 题目大意: 给你两个长度均为\( ...

  7. 14-压缩css

    const { resolve } = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') const M ...

  8. 如何遍历HashMap集合?

    在Java中,HashMap是一种常用的数据结构,它提供了快速的查找.插入和删除操作.当我们需要遍历HashMap中的所有元素时,可以利用三种不同的方法实现. 方法一:使用键值对遍历 HashMap中 ...

  9. java String字符串去除html格式

    1.replaceAll方法 去除html格式 语法格式"replaceAll(匹配此字符串的正则表达式,"")"."replaceAll()&quo ...

  10. 【kafka】-分区-消费端负载均衡

    一.为什么kafka要做分区? 因为当一台机器有可能扛不住(类比:就像redis集群中的redis-cluster一样,一个master抗不住写,那么就多个master去抗写),把一个队列的单一mas ...