Memory leak (ERROR: AddressSanitizer: heap-buffer-overflow) in simple block of code

Memory leak (ERROR: AddressSanitizer: heap-buffer-overflow) in simple block of code

我有以下代码:

int main(int argc,char **argv){
  char *flags=malloc(1*sizeof(char));
  flags[0]='a';
  printf("%s\n",flags);
  free(flags);
  return 0;
}

不多不少。

如果我注释掉 printf,不会发生错误。

为什么会出现这个错误,我该如何解决?

对于 printf("%s\n",flags);flags 应该指向包含 字符串 的内存。

flags 内存不包含 空字符 ,因此不是字符串。

要么 1,使分配给 flags 的分配内存更大并附加一个 '[=14=]' 或 2,使用有限的打印:printf("%.1s\n",flags); 或 3) 打印一个 char : printf("%c\n",*flags);