面试题:strcpy考虑内存重叠
面试时遇到些strcpy()函数,本来挺简单的,但是面试官的一番描述让我有些不知道怎么下手
我当时觉得考虑内存重叠问题就可以了,但是他说的不是我理解的那样,然后就一直卡在那了,不过面试官很有耐心,我自己都开始嫌弃自己的理解能力了。不过面试官还是耐心的给我解释具体的情况。。唉,很可惜,还是自己学得不够,要深刻反思。
接下来实现考虑内存重叠的strcpy的函数
注意事项:
1. 判断输入参数的合法性。
2. 要有返回的参数
3. 别忘了复制字符串末尾的'\0'
4. 如果内存有重叠,则倒着复制
char* mystrcpy(char* dst, const char* src)
{assert(dst != NULL);assert(src != NULL);if (dst == src)return dst;int size = strlen(src) + 1;if (dst < src || src + size <= dst){char* d = dst;const char* s = src;while (size--)*d++ = *s++;}else{char* d = dst + size - 1;const char* s = src + size - 1;while (size--)*d-- = *s--;}return dst;
}
面试题:strcpy考虑内存重叠相关推荐
- 笔试题strcpy写法
[精华] 出现频率最高的笔试题strcpy写法 http://www.chinaunix.net 作者:HopeCao 发表于:2008-10-30 15:49:14 [发表评论] [查看原文] [ ...
- 函数 —— strncpy() (内存重叠) memcpy() memmove() 一个字符串拷贝给另一个字符串
char *strncpy(char *dest, const char *src, size_t n) *strncpy(char *dest, const char *src, size_t n) ...
- 对内存重叠的深入认识
内存重叠:拷贝的目的地址在源地址范围内.所谓内存重叠就是拷贝的目的地址和源地址有重叠. 在函数strcpy和函数memcpy都没有对内存重叠做处理的,使用这两个函数的时候只有程序员自己保证源地址和目标 ...
- 从memcpy到memmove,内存函数拷贝与内存重叠问题(重点内容)
有一个关于拷贝的问题,假如有这样一个字符串 char a[]="hello"; 我需要把这个字符串拷进另一个变量中 char a1[10]; 好像方法蛮多的,比如strcpy #d ...
- memcpy内存重叠的解决
内存重叠:拷贝的目的地址在源地址范围内.所谓内存重叠就是拷贝的目的地址和源地址有重叠. 在函数strcpy和函数memcpy都没有对内存重叠做处理的,使用这两个函数的时候只有程序员自己保证源地址和目标 ...
- memcpy内存重叠问题
memcpy内存重叠 之前一直没有注意到内存复制函数的内存重叠问题.今天偶遇遂琢磨了一下,记之. 函数简介:c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始 ...
- memcpy和memmove的区别以及内存重叠问题
memcpy和memmove的区别以及内存重叠问题 转自:https://www.codecomeon.com/posts/89/ 区别 memcpy() 和 memmove() 都是C语言中的库函数 ...
- C++面试题-指针-动态内存指针
C++面试题-指针-动态内存指针 问:什么是内存泄漏和内存溢出? 答:内存泄漏:在程序申请内存后,该内存不再会被引用,但是不能释放该内存空间.如果你delete指针之后,该空间不能归还,自己又不能进行 ...
- 腾讯面试题:服务器内存1G,有一个2G的文件,里面每行存着一个QQ号(5-10位数),怎么最快找出出现过最多次的QQ号。
腾讯最新面试题:服务器内存1G,有一个2G的文件,里面每行存着一个QQ号(5-10位数),怎么最快找出出现过最多次的QQ号. 以下是个人所建第Algorithms_12群内朋友的聊天记录: 首先你要注 ...
最新文章
- MultiObjective using Evolutionary Algorithms (2) -- Multi-Objective Optimization
- 如何利用云原生技术构建现代化应用?
- 计算机文档vmware安装虚拟机,教你如何用VMware虚拟机安装系统.docx
- leadshop开源商城系统
- 关于锁表查询的部分SQL
- 用Unity简单实现第三人称人物的移动和转向
- 20.TCP/IP 详解卷1 --- TCP 的成块数据流
- 图神经网络初探:build a simple graph nets
- 数字电路与逻辑设计计算机专业,数字电路与逻辑设计试卷(A)(04级计算机、网络工程、软件工程专业).doc...
- json转Map泛型Map<String,T>,json转集合Map泛型List<Map<String,T>>工具类
- ORACLE新增字段、注释等
- Golang Tools
- html中尖括号写法,HTML中如何显示特殊字符(尖括号 “”,)?
- AspNet Core 2.2 SendGrid邮件发送(可群发)
- OSINT + Python #x3D; 自定义黑客
- 如何设置ul中li的行距
- broker-list与bootstrap-server辨析
- C语言数组大小极限,C中允许的最大静态数组大小是多少?
- 如何建设自己的网站 博客
- 50个极好的bootstrap前端框架