有关strncpy,memcpy,memmove的比较
来源:互联网 发布:筒仓设计软件 编辑:程序博客网 时间:2024/05/22 16:54
比如下面这个例子
char src[10]="abcdefg";
下面哪个函数能够使src内容变成‘aabcdefg’
strncpy(src+1,src,7);
memcpy(src+1,src,7);
memmove(src+1,src,7);
这涉及源地址和目标地址有重叠的情况。
strncpy原理上仍然是按照顺序一个一个字节的复制,所以输出是‘aaaaaaa’
memmove允许源地址和目标地址重叠,这种复制方式最安全,可以满足要求。
memcpy的输出是aaaccefg.那么它是如何执行的呢,我分别复制不同的字节数,从1-->7发现
它按照内存结构,以1,2,4为基数字节进行复制,比如复制7个,就按照1+2+4的方式,先复制1个,然后复制2个,最后复制剩余4个
abcdefg复制1个变成aacdefg,然后复制2个变成aaacefg,最后复制4个变成aaaccefg.
以上测试均基于Linux gcc编译器
有兴趣的可以试一下。
- 有关strncpy,memcpy,memmove的比较
- strcpy,strncpy,memcpy,memmove
- 实现memcpy、memcpy的优化、memmove、memset、strcpy、strncpy
- memcpy 与memmove的比较
- strcpy,memcpy,memmove,memset,strncpy
- strcpy,memcpy,memmove,memset,strncpy
- strcpy,memcpy,memmove,memset,strncpy
- strcpy,memcpy,memmove,memset,strncpy
- 有关memcpy和memmove
- memcpy和memmove函数的比较
- memcpy和memmove函数的比较
- memset(),memcpy(),memccpy(),memmove(),bcopy(),strcpy(),strncpy()
- bcopy,memccpy,memcpy,memmove,strcpy,strncpy
- 在嵌入式开发中比较 strncpy 和 memcpy 的区别
- memcpy和memmove函数的比较与实现
- memcpy和memmove函数的比较与实现
- memcpy和memmove函数的比较与实现
- memcpy和memmove函数的比较与实现
- 微软会对 Windows Phone 7 收费吗?
- 线程和信号
- Java泛型
- amix the lucky stiff(vimrc)
- exe4j打包+Eclipse打包插件说明 GUI项目打包EXE文件的总结
- 有关strncpy,memcpy,memmove的比较
- tomcat和eclipse安装
- C#系列一
- VC++6.0 Debug模式与Release模式的区别
- Servlet/JSP学习笔记(2)-基础知识
- 农历日期控件解决方案
- Requirements Analysis Process:Requirements Elicitation, Analysis And Specification
- Visual Studio 2008 使用MPI的设置
- 在Eclipse中安装swt designer插件