NullZeiger- Problem !



  • Hallo liebe Programmierer,

    habe vor in einen Stream zu schreiben.
    Nun möchte ich gerne einen Stream erstellen, der mehr als ein Byte hat...

    Da dies im header nicht so geht uchar m_bitStream[100] ,
    habe ich es so realisiert uchar * m_bitStream ...

    Im Konstruktor habe ich ...m_bitStream = 0... initialisiert

    Nun möchte ich gern in meiner CPP Datei ein Byte des Streams
    um eine Zahl shiften und es mit dem Stream "oder-"verknüpfen...

    Hier mein Code:

    // Schiebe & Kopiere nach links
    *m_bitValue = m_bitValue << nShift;
    m_bitStream [m_nBytes] = (m_bitValue | m_bitStream[m_nBytes]);

    hier kommt jedoch jetzt die Fehlermeldung:

    **Eine nicht behandelte Ausnahme des Typs 'System.NullReferenceException'
    ist in BITSTREAM_01.exe aufgetreten.

    Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine
    Objektinstanz festgelegt.**

    Ich bin mir über den Nullzeiger bewusst, aber mit dieser Variante...

    * m_bitStream [m_nBytes] = (m_bitValue | * m_bitStream[m_nBytes]);

    ...kann ich jedoch dann nicht Oder- Verknüpfen, da "m_bitStream ein uchar * ist"

    ich bitte dringend um Hilfe...

    Danke...



  • Ich glaube der Fehler liegt in der Deklaration meines Streams....

    aber eine andere Methode ausser die jetzige in meiner "CStream.h" :

    uchar * m_bitStream ;

    fällt mir nichts weiter ein...


  • Mod

    Es langt nicht einen Zeiger zu definieren. Du musst auch was reintun auf was dieser Zeiger zeigt...



  • Erstens: Was genau spricht denn dagegen, die Daten als Array "uchar m_bitStream[100];" zu deklarieren?

    Zweitens: Wenn du einen Pointer verwendest, muß der auf einen gültigen Speicherbereich zeigen - und NULL ist nicht gültig. Das kann entweder ein anderswo angelegtes Array sein oder auch die Rückgabe von "new uchar[100]" (im letzteren Fall darfst du aber das delete[] nicht vergessen.


Anmelden zum Antworten