我写了以下内容,希望通过printf
获得seg错误或垃圾输出#include <stdio.h>
#include <stdlib.h>
main(){
char* test = malloc(1);
*test = 'a';
*(test+1) = 'b';
*(test+2) = 'c';
*(test+3) = 'd';
*(test+4) = 'e';
*(test+5) = 'f';
printf("%s\n", test);
}
而输出是:
abcdef
我只分配了1个字节,为什么我允许写入传递那个单字节?另外,printf如何知道字符串何时终止?是否所有字节都没有明确地将字符分配给空字符?我希望这些是随机垃圾,但它似乎终止于正确的位置。我希望这足够具体!谢谢。