【发布时间】:2021-03-04 18:12:13
【问题描述】:
我有以下代码:
int main(int argc,char **argv){
char *flags=malloc(1*sizeof(char));
flags[0]='a';
printf("%s\n",flags);
free(flags);
return 0;
}
不多不少。
如果我把 printf 注释掉,就不会发生错误。
为什么会出现这个错误,我该如何解决?
【问题讨论】:
-
NUL 在调用
printf之前终止字符串,(或使用calloc),另外,1个字节不足以存储“a”,你需要2个字节(一个用于尾随的NUL )
标签: c memory-leaks heap-memory