C memcpy()用法
原文地址:https://blog.csdn.net/qq_21792169/article/details/50561570
头文件:#include <string.h>
memcpy() 用来复制内存,其原型为:
void * memcpy ( void * dest, const void * src, size_t num );
memcpy() 会复制 src 所指的内存内容的前 num 个字节到 dest 所指的内存地址上。
memcpy() 并不关心被复制的数据类型,只是逐字节地进行复制,这给函数的使用带来了很大的灵活性,可以面向任何数据类型进行复制。
需要注意的是:
dest 指针要分配足够的空间,也即大于等于 num 字节的空间。如果没有分配空间,会出现断错误。
dest 和 src 所指的内存空间不能重叠(如果发生了重叠,使用 memmove() 会更加安全)。
与 strcpy() 不同的是,memcpy() 会完整的复制 num 个字节,不会因为遇到“\0”而结束。
【返回值】返回指向 dest 的指针。注意返回的指针类型是 void,使用时一般要进行强制类型转换。
代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N (10)
int main()
{
char* p1 = "abcde";
char* p2 = (char*)malloc(sizeof(char) * N);
char* p3 = (char*)memcpy(p2, p1, N);
printf("p2 = %s\np3 = %s\n", p2, p3);
free(p2);
p2 = NULL;
p3 = NULL;
system("pause");
return 0;
}
运行结果:
p2 = abcde
p3 = abcde
代码说明:
1) 代码首先定义p1,p2,p3三个指针,但略有不同,p1指向一个字符串字面值,给p2分配了10个字节的内存空间。
2) 指针p3通过函数memcpy直接指向了指针p2所指向的内存,也就是说指针p2、p3指向了同一块内存。然后打印p2,p3指向的内存值,结果是相同的。
3) 最后按照好的习惯释放p2,并把p3也置为NULL是为了防止再次访问p3指向的内存,导致野指针的发生。
---------------------
作者:HeroKern
来源:CSDN
原文:https://blog.csdn.net/qq_21792169/article/details/50561570
版权声明:本文为博主原创文章,转载请附上博文链接!
C memcpy()用法相关推荐
- memcpy用法错误
1.定义一个std::vector < double > colData 型数据 通过inData复制一块大小为inDataSize的内存给colData 刚开始: memcpy(& ...
- memcpy()与memset()
一.memcpy 1.memcpy用法: void *memcpy(void *dest, const void *src, size_t n); 头文件:C语言需要包含头文件string.h:C++ ...
- C语言:memcpy()---数据拷贝
C语言 基础开发----目录 1.memcpy() 简介 1.1 函数原型 void *memcpy(void *destin, void *source, unsigned n); 1.2 参数 d ...
- c语言memcopy_C语言中memcpy 函数的用法详解
C语言中memcpy 函数的用法详解 memcpy(内存拷贝函数) c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址 ...
- C++之memcpy的用法
memcpy的用法 memcpy是 c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中. 1.函数原型 v ...
- memcpy函数详解 看这一篇就够了-C语言(函数讲解、 使用用法举例、作用)
memcpy()函数用于:复制内存块 函数介绍 函数声明:void * memcpy ( void * destination, const void * source, size_t num ); ...
- memcpy函数用法
各位读者朋友们,由于更新blog不易,如果觉得这篇blog对你有用的话,麻烦关注,点赞,收藏一下哈,十分感谢. 1.简介 memcpy 函数用于把资源内存(src所指向的内存区域) 拷贝到目标内存(d ...
- c语言memcpy是什么,C语言memcpy函数的用法
介绍 memcpy是memory copy的缩写,意为内存复制,在写C语言程序的时候,我们常常会用到它.它的函原型如下: void *memcpy(void *dest, const void *sr ...
- memcpy, strcpy, strncpy的区别和用法
注意事项 strcpy 是依据 "\0" 作为结束判断的,如果 s2 的空间不够,则会引起 buffer overflow. memcpy用来在内存中复制数据,由于字符串是以&qu ...
最新文章
- CVPR 2019审稿满分论文:中国博士提出融合CV与NLP的视觉语言导航新方法
- 谈谈服务雪崩、降级与熔断
- linux 内核 fork,《Linux内核分析》之分析fork函数对应的系统调用处理过程
- AI人工智能开发的路径有三条,最成功的是机器学习技术:强化学习
- Java 基础 之 continue和 break
- 紧跟时代步伐,让我们拥抱MVC 3
- Activiti源码 之工厂模式
- SQL登录 18470 18452 错误
- 【AI视野·今日Sound 声学论文速览 第三期】Wed, 20 Apr 2022
- 每天一个linux 命令 find命令
- php file 扩展,php5.4.31安装php_fileinfo扩展和php_intl扩展
- SQL Server中的尾日志备份和还原
- H5中 video 使用border-radius失效解决方法
- css中的expression
- 2022最新版VMware虚拟机及CentOS-7安装教程
- linux设备驱动程序之时钟管理
- CSS-div圆角被内部元素覆盖问题
- 怎样卸载干净Oracle
- 制作ftl文件通过FreeMarke生成PDF文件(含图片处理)
- Linux 目录权限
热门文章
- 庄羽提议郭敬明成立反剽窃基金,AI:反剽窃,不行;剽窃,行!
- Python3中_和__的用途和区别
- web服务器部署证书
- Aurora8B10B IP使用 -04- IP例程应用实例
- 计算机网络 - linux - 配置静态ip地址(NAT模式)
- 简述Thread的interrupt()、interrupted()及isInterrupted()的区别
- mysql 表聚合_Mysql分表之后的聚合统计
- BERT-BiLSTM-CRF模型代码
- Lattice ddr3教程全攻略之仿真篇
- CTFSHOW 套娃shell