Pointer-Frage
-
Hallo!
Was kann bei folgendem zu Problemen führen?
unsigned char* tex; // <-- global! ... void funktion(unsigned char* tex){ .. tex = (unsigned char*)malloc(50); //50 nur als Beispiel ... } .... void main(){ ..funktion(tex); }Irgendwie wird da tex nicht richtig gesetzt.
Wenn ich allerdings funktion() mache, also die globale Variable direkt verwende, funktioniert es.Warum genau?
Dankesehr.
-
1. ist das C und kein C++ (C++ = Operator "new" statt Funktion malloc)
2. übergibst du tex nicht per Referenz, so wird nur eine Kopie innerhalb von funktion() erstellt und danach wieder verworfen. So gehts:
void funktion(unsigned char *&tex){ .. tex = (unsigned char*)malloc(50); //50 nur als Beispiel ... }Jetzt wird tex als Referenz übergeben und somit wird auch in die tex geschrieben, die du übergibst.
-
3. void main() { //int main!!!
-
hallo, danke euch beiden.
Das heißt "funktion" erstellt sich eine Kopie von meinem Parameter, arbeitet mir der ein bisschen rum und schmeißt die dann wieder weg?Und wenn ich *&tex benutze, dann zeigt der Parameter auch wirklich auf den selben Speicherbereich?
-