Beachten Sie die Verwendung von free in diesem Fall. Im Allgemeinen benötigen Sie genau einen Anruf free für jeden getätigten Anruf malloc.
Sergej Kalinitschenko
Sie erhalten die Warnung, weil Sie keinen Wert zugewiesen haben one, was ein Zeiger ist. Dies ist ein undefiniertes Verhalten.
Sie sollten es so deklarieren:
Vector* one = malloc(sizeof(Vector));
oder so:
Vector one;
in diesem Fall müssen Sie ersetzen -> Betreiber mit . so was:
one.a = 12;
one.b = 13;
one.c = -11;
Schließlich können Sie in C99 und höher verwenden ausgewiesene Initialisierer:
Vector one = {
.a = 12
, .b = 13
, .c = -11
};
plaknas
Wenn Sie verwenden Vector *one Sie erstellen lediglich einen Zeiger auf die Struktur, aber es wird ihr kein Speicher zugewiesen.
Einfach verwenden one = (Vector *)malloc(sizeof(Vector)); Speicher deklarieren und instanziieren.
Dies ist möglicherweise nicht die professionellste Lösung, aber anstatt sie zu initialisieren, verwenden Sie mallocSie können es auch mit initialisieren new:
Vector *one = new Vector();
Find ich persönlich eleganter.
14023800cookie-checkWarnung: X darf in dieser Funktion nicht initialisiert verwendet werdenyes