Memcpy 复制的内容比预期多

MaM*_*aMu 0 c memcpy

我正在尝试复制 x 字节。计算并打印尺寸(见下文)。我使用 memcpy 复制计数的字节数。但结果我有时会得到更长的值。怎么了?

这是一些代码:

  size_t  symlen  = tmpP - cp;
  char * triP = malloc(symlen);
  printf("mallocated %zu\n", symlen) ;
  memcpy (triP, tmpP - (symlen) , symlen);
  printf(">>VAL %s<<\n", triP);
Run Code Online (Sandbox Code Playgroud)

这是一些输出,您可以看到,该值长达 15 个字符。

mallocated 15
>>VAL 558657,1033,8144399,814<<
mallocated 15
>>VAL 558657,1033,8144399,814<<
Run Code Online (Sandbox Code Playgroud)

Did*_*set 5

您应该再分配一个字节,并在其中写入一个空字符来标记字符串的结尾。

size_t  symlen  = tmpP - cp;
char * triP = malloc(symlen+1);
printf("mallocated %zu\n", symlen) ;
memcpy (triP, tmpP - (symlen) , symlen);
tripP[symlen] = '\0';
printf(">>VAL %s<<\n", triP);
Run Code Online (Sandbox Code Playgroud)