我们知道,分类的方法列表是通过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);
}
网友评论