为什么printf不会出错或产生垃圾?

时间:2018-02-15 01:36:27

标签: c

我写了以下内容,希望通过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如何知道字符串何时终止?是否所有字节都没有明确地将字符分配给空字符?我希望这些是随机垃圾,但它似乎终止于正确的位置。我希望这足够具体!谢谢。

0 个答案:

没有答案