Zuweist printf () Speicher in C?

Diese einfache Methode erstellt nur ein Array der dynamischen Größe n und initialisiert es mit den Werten 0 ... n-1. Es enthält einen Fehler, malloc () weist nur n anstelle von sizeof (int) * n Bytes zu:

int *make_array(size_t n) {
    int *result = malloc(n);

    for (int i = 0; i < n; ++i) {
        //printf("%d", i);
        result[i] = i;
    }

    return result;
}

int main() {
    int *result = make_array(8);

    for (int i = 0; i < 8; ++i) {
        printf("%d ", result[i]);
    }

    free(result);
}

Wenn Sie die Ausgabe überprüfen, werden Sie feststellen, dass einige Zahlen wie erwartet gedruckt werden, die letzten sind jedoch verstümmelt. Sobald ich jedoch printf () in die Schleife eingefügt habe, war die Ausgabe seltsamerweise korrekt, obwohl die Zuordnung immer noch falsch war! Gibt es eine Art von Speicherzuordnung für printf ()?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage