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...
-
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.