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);
我有以下代码:
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);