memmove与memcpy

2021-04-17  本文已影响0人  恍然如梦_b700

我们知道,分类的方法列表是通过memmove和memcpy加到类的方法列表的前面,而同名的分类方法根据文件的编译顺序,后编译的方法加到最前面,但是memmove和memcpy是什么呢?

memcpy

memcpy函数从src内存中拷贝了count字节到dest内存区域,但是src和dest的内存区域不能重叠

memmove

memcpy函数从src内存中拷贝了count字节到dest内存区域,但是src和dest的内存区域可以重叠
举个🌰

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

void printArray(int *a,int count) {
    for (int i = 0; i<count; i++) {
        printf("%d",*(a+i));
    }
    printf("\n");
}


int main(int argc, const char * argv[]) {

    int * dest;
    dest = (int *)malloc(sizeof(int)*3);
    *dest = 1;
    *(dest+1) = 2;
    *(dest+2) = 3;
    
    int * src;
    src = (int *)malloc(sizeof(int)*2);
    *src = 6;
    *(src+1) = 7;
    
    int addedCount = 2;
    int oldCount = 3;
    int newCount = oldCount + addedCount;
    dest = (int *)realloc(dest, sizeof(int) * newCount);
    printArray(dest, newCount);
    memmove(dest+addedCount, dest,sizeof(int) * oldCount);
    printArray(dest, newCount);
    memcpy(dest, src, sizeof(int) * addedCount);
    printArray(dest, newCount);
   

    return(0);
}

上一篇 下一篇

猜你喜欢

热点阅读