1. memcpy

void *memcpy(
    void *dst, 
    const void *src,
    size_t count
);

功能:拷贝src地址 count字节 到dst地址

返回值:该函数返回一个指向目标存储区 dst 的指针。

2. memmove

void *memmove(
    void *dst, 
    const void *src, 
    size_t count
);

功能:memmove用于拷贝字节,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,但复制后源内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同

3. memccpy

void *memccpy(
    void *dest,
    void *src, 
    unsigned char c,
    unsigned int count
);

功能:由src所指内存区域复制不多于count个字节到dest所指内存区域,如果遇到字符c则停止复制。 返回值:如果c没有被复制,则返回NULL,否则,返回一个指向紧接着dest区域后的字符的指针。

4. 区别与相同

相同:这三个函数的功能均是将某个内存块复制到另一个内存块,

区别:唯一的区别是,当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy不保证拷贝的结果的正确。

5. 内存重叠问题

拷贝的目的地址在源地址的范围内,有重叠。

例如:

char s[32] = "abcdefg";
char* p = s;
p++:
strcpy(p, s);
Copyright © ershouche-FE 2019 all right reserved,powered by Gitbook文件修订时间: 2022-02-28 10:59:44

results matching ""

    No results matching ""