说我有:
unsigned char *varA, *varB, *varC;
varA=malloc(64);
varB=malloc(32);
varC=malloc(32);
Run Code Online (Sandbox Code Playgroud)
如何将varA 的前 32个字节放入varB,将varA的最后 32个字节放入varC?
memcpy(varB, varA, 32);
memcpy(varC, varA + 32, 32);
Run Code Online (Sandbox Code Playgroud)
这很简单,因为底层数据类型unsigned char与字节大小相同.如果varA,varB和,varC是整数,则需要将size参数乘以memcpy(即32),sizeof(int)以计算要复制的正确字节数.如果我是迂腐的话,我可以sizeof(unsigned char)在上面的例子中乘以32 ,但这不是必要的,因为sizeof(unsigned char)== 1.
请注意,我不需要将32 in乘以varA + 32任何东西,因为编译器在向指针添加常量偏移时为我做了这一点.
还有一件事:如果你想要快速,只需分别处理每一半varA,而不是分配两个新的缓冲区并复制到它们中就足够了.