附加两个void*指针



是否有办法追加2 void* ptr?

: 例如:

void * ptr;
ptr = malloc(3);
read(0, ptr, 3);
void * rtr;
rtr = malloc(3);
read (0, rtr, 3);
/*how to add ptr and rtr??*/

谢谢!

*编辑:是的,我想把内容加在一起。实际上,这是我的代码的工作方式:

void *ptr;
ptr = malloc(3);
read(0, ptr, 3);
void *rtr;
rtr = malloc(1);
int reader;
reader=read(0, rtr, 1);
int i=1;
while(reader!=0){
  /* append contents of rtr to ptr somehow?? */
  i++;
  rtr = realloc(rtr, i);
  reader=read(0, rtr, 1);
}

我正在读取一个文件。文件可能会改变,如果文件改变,我必须一个字节一个字节地追加

你的问题真的没有答案,但我会试着…

你必须先用malloc()分配一块内存。然后,你的void指针会指向它。这个块有一个确定的大小。第二个块符合相同的概念,并且有一个确定的大小。

为了将第二个块附加到第一个块上,应该为第一个块分配足够的额外空间来附加第二个块的内容。然后使用memcpy()将字节从第二个块复制到第一个块。您需要使用转换为字节指针来指定到第一个块的偏移量。

((unsigned char *)(ptr) + ptr_alloced_bytes)将是第一个块到第一次复制数据末尾的偏移量,其中ptr_alloced_bytes是第一次操作读取的字节数。

否则,您需要分配一个足够大的新块来容纳这两个块,然后使用memcpy()复制它们。