`

memcpy() -- 拷贝内存内容

阅读更多
memcpy() -- 拷贝内存内容
2007年07月06日 星期五 09:07
相关函数: bcopy(), memccpy(), memmove(), strcpy(), strncpy()
表头文件: #include <string.h>
定义函数: void *memcpy(void *dest, const void *src, size_t n)
函数说明: memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。与strcpy()不同的是,memcpy()会完整的复制n个字节,不会因为遇到字符串结束'\0'而结束
返回值: 返回指向dest的指针
附加说明: 指针src和dest所指的内存区域不可重叠



-------------------------------------------------------
#include <string.h>
#include <stdio.h>

int main()
{
char a[30] = "string (a)";
char b[30] = "hi\0zengxiaolong";
int i;

strcpy(a, b); //a[30] = "hi\0ing (a)"
printf("strcpy():");
for(i = 0; i < 30; i++)
printf("%c", a[i]); //hiing (a)


memcpy(a, b, 30); //a[30] = "hi\0zengxiaolong"
printf("\nmemcpy():");
for(i = 0; i < 30; i++)
printf("%c", a[i]); //hizengxiaolong
printf("\n i = %d\n", i); //30

}
分享到:
评论

相关推荐

    Keil下的一些内存拷贝

    内存拷贝通常在C语言中通过`memcpy()`函数实现,但在某些特定场合,为了追求性能优化或者解决特定硬件限制,可能需要使用汇编语言来手动实现。"汇编优化"标签表明我们讨论的是如何通过汇编代码来提升内存拷贝的速度...

    C语言中memcpy 函数的用法详解

    c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。 void* memcpy(void* destination, const void* source, size_t num); void*...

    内存拷贝的优化方法——

    内存拷贝优化方法 内存拷贝是计算机科学中的一种基本操作,然而,在复杂的底层网络程序中,内存拷贝、字符串比较和搜索操作很容易成为性能瓶颈所在。编译器自带的此类函数虽然做了一些通用性的优化工作,但因为在...

    C/C++面试之算法系列--几个典型的内存拷贝及字符串函数实现

    在C/C++编程中,`memcpy`是一个非常基础且重要的内存拷贝函数,它负责将源地址`src`指向的数据块复制到目标地址`dest`所指向的位置。该函数的主要实现细节如下: ```cpp void* memcpy( void *dest, const void *src...

    memcpy, memcpy()函数,字符串拷贝

    在标题“memcpy, memcpy()函数,字符串拷贝”以及描述“memcpy: 头文件,函数原型,函数功能,函数返回值,说明”中,主要讨论了`memcpy`函数的相关知识点。下面将详细介绍`memcpy`函数的关键特性及其应用场景。 ##...

    memcpy的用法

    2. 首先要判断指针的值不能为空,dest 为空的话肯定不能拷贝内存空间,src 为空相当于没有拷贝。 3. ""空串是指内容为 0,NULL 是 0,不是串;两个不等价。 4. int dest[2] = {0}; 是对 int 类型的数组初始化的方法...

    C实现内存拷贝以及字符串拷贝函数

    与`memcpy()`不同的是,`memmove_kk()`可以处理源和目标内存区域重叠的情况,这使得它在处理内存移动时更加灵活和安全。 #### 实现细节: ```c void* memmove_kk(void* dest, const void* src, size_t count) { ...

    大块内存拷贝源代码, 各种方法实现,包括mmx和sse指令

    在C/C++中,`memcpy`函数是最常用的内存拷贝工具,它接受三个参数:目标地址、源地址和要拷贝的字节数。其工作原理是逐个复制源内存区域的数据到目标内存区域。然而,对于大块内存的拷贝,这种基础方法可能会相对较...

    MMX,SSE大内存快速拷贝

    传统的C语言中的`memcpy()`函数可以完成这个任务,但当涉及到大量数据时,使用MMX或SSE指令集进行优化,可以极大地减少拷贝时间。通过编写汇编代码,直接利用MMX或SSE指令,我们可以实现更高效的内存拷贝,因为它们...

    C函数之memcpy()函数用法

    函数原型  void *memcpy(void*dest, const void *src, size_t n);  功能  由src指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始...  memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型

    memmove、memcpy和memccpy简介.docx

    memmove、memcpy 和 memccpy 是三个常用的内存拷贝函数,它们都用于从一个缓冲区拷贝数据到另一个缓冲区,但它们之间有一些区别。 memmove 函数 memmove 函数的定义为:`void *memmove(void *dest, const void *...

    C++中memcpy和memmove的区别总结

    memcpy内存拷贝,没有问题;memmove,内存移动?错,如果这样理解的话,那么这篇文章你就必须要好好看看了,memmove还是内存拷贝。那么既然memcpy和memmove二者都是内存拷贝,那二者究竟有什么区别呢? 先说memcpy 你...

    bcmp(比较内存内容).pdf

    bcmp(比较内存内容)系列函数详解 在计算机编程中,比较内存...bcmp系列函数为开发者提供了多种比较和拷贝内存内容的方法,从而提高程序的效率和可靠性。但需要注意的是,一些函数已经被弃用,需要使用新的函数代替。

    Memset、Memcpy、Strcpy 的作用和区别

    Memset、Memcpy和Strcpy是C语言中常用的三个内存操作函数,它们分别用于内存填充、内存拷贝和字符串拷贝,虽然看起来功能相似,但每个函数都有其独特的用途和特点。 Memset函数主要用于将指定内存区域的前count个...

    网络渗透——BSD的memcpy溢出利用技术

    防范memcpy溢出的方法包括使用安全的内存拷贝函数,如memcpy_s或memmove,它们会检查目标缓冲区的大小,防止溢出;使用栈保护机制,如Canary值,检测栈溢出;以及使用地址空间布局随机化(ASLR)等技术,增加攻击的...

    memcpy实现 (2).pdf

    `memcpy`函数作为C语言中的一个经典内存拷贝工具,它的使用广泛且常见,但其背后的实现原理和潜在的问题往往被忽视。本文将深入探讨`memcpy`的实现,并分析其在地址重叠情况下的行为,以及为何在某些情况下需要...

    asm.zip_CPU assembler C++_内存拷贝

    在C++中,通常使用`std::memcpy`函数来完成这个任务,但有时候为了追求极致性能,开发者可能会选择使用内联汇编来编写自己的内存拷贝函数。这样可以避免C++运行时库的开销,并且可能利用特定CPU架构的特性,如SIMD...

    memcpy实现.pdf

    在编程领域,`memcpy`是一个广泛使用的函数,用于从源内存区域复制数据到目标内存区域。然而,面试中如果被问及`memcpy`的实现,需要谨慎回答,因为这里涉及到一个重要的陷阱:地址重叠。`memcpy`函数在标准中的定义...

Global site tag (gtag.js) - Google Analytics