Frage zu malloc



  • unsigned char *test = (unsigned char*)malloc(1000);
    

    1. Wir Frage ich später im Programm die Größe von "test" ab? Also als Ergebnis eben 1000 Byte.

    2. Ist "unsigned char *test;" standard NULL oder muss ich dies setzen, damit ich abfragen kann "if (test!=NULL)" (habe hier keine Entwicklung) und herrausfinde ob ich überhaupt mit "test" arbeiten darf.

    Wäre toll wenn mir dies jemand beantworten könnte.



  • 1. gar nicht.
    2. Nein. Ausnahme: malloc hat keinen Speicher gefunden und gibt deshalb 0 zurück. Das passiert aber eig nur, wenn dein System schon fast am Ende ist 😉



  • Man kann nicht erfahren wie gross die Variable ist? Also muss man auf NULL setzen wenn man abfragen will ob Variable schon belegt wurde oder nicht.



  • ne, das ist so:
    ist malloc erfolgreich, gibt er dir 1000 byte reservierten speicher.
    ist malloc nicht erfolgreich, dann speichert er den wert NULL in den zeiger test.

    wenn malloc erfolgreich war, brauchst du es ja später nicht abzufragen.
    du weisst ja, das du 1000 byte angefordert hast.
    wenn du den wert 1000 später brauchst, musst du den in einer variable speichern.

    wenn du zeichenketten in test speichern willst, dann kannst du die länge mit strlen(test) abfragen



  • kopiel schrieb:

    unsigned char *test = (unsigned char*)malloc(1000);
    

    korrekt lautet die zeile:

    unsigned char* test = malloc(1000);
    

    denn du programmierst c, nicht c++.


Anmelden zum Antworten