Problem mit Zeigern bzw. NEW <- Hat den keiner ne Idee???
-
Hi
ich habe volgenden Code:char **levelMatrix; TColor **FastBack; levelMatrix=(char**)malloc(200*sizeof(char**)); for(int i=0; i<200; i++) levelMatrix[i]=(char*)malloc(levellenght*sizeof(char*)); FastBack = (TColor**)malloc(levellenght * sizeof(TColor**)); for(int i = 0;i < levellenght;i++) FastBack[i] = (TColor*)malloc(200 * sizeof(TColor*));
Damit will ich verhindern das ich immer speicherzugriffsverletzungung bekomme wie es bei arrays der fall war.
Hier bei bekomme ich aber die Fehlermeldung:
[C++ Fehler] HanfmanU.cpp(745): E2277 L-Wert erwartet
//Zeile 745 = levelMatrix=(char**)malloc(200*sizeof(char**));
[C++ Fehler] HanfmanU.cpp(747): E2277 L-Wert erwartetDer gleiche Code lässt sich aber so in VC++ compilieren
Komischerweise klappt der gleiche code bei TColor aber nicht bei char!
Nun habe ich das von Char so umgeändert:
levelMatrix = (char**)malloc(200 * sizeof(char**)); for(int i = 0;i < 200;i++) *levelMatrix[i] = (char)malloc(levellenght * sizeof(char*));
so lässt er sich zwar compilieren aber die stuck errors bei starten der exe bekomme ich dann immernoch!
Was kann ich tun?
THX
Dagsta
Edit:
Bitte aussagekräftige Überschriften wählen. Danke!
-
Dein ursprünglicher Code lässt sich im BCB6 problemlos kompilieren.
-
komisch in einem neuen project geht der code nur im bestehenden nicht jemand ne idee woran das liegen kann?
-
Der Compiler sagt sich bestimmt "Hey, ich bin eine C++-Compiler, ich hab langsam die Nase voll von dem malloc-Gewurstel!"
-
... Hey, ich bin eine C++-Compiler ...
Womit Jansen sicherlich auf das Vorhandenseins von new hinweisen will
-
Ne, ne.
New ist zu "neu", daß wird sich nicht durchsetzen.Aber nun mal im Ernst, hat von euch keiner ne idee worann das liegen kann
-
also mit new klappt es auch nicht:
char (*levelmatrix)[levellenght]; TColor (*FastBack)[200]; levelMatrix = new char[200][levellenght]; FastBack = new TColor[levellenght][200]; delete FastBack; delete levelMatrix;
[C++ Fehler] HanfmanU.cpp(756): E2277 L-Wert erwartet
Woran kann den das nur liegen?
-
Hat den keiner ne Idee was ich machen kann, damit ich das auch in meinem bestehenden Project verwenden kann!
Habe schon die cpp dateien einzeln geladen und ein neues project erzeugt aber auch da ging es nicht!Es kann doch nicht sein, dass das nicht machbar ist! ODER???
Hoffe mir kann einer Helfen!
THX
DAGSTA
-
1. dein code von ganz oben lässt sich bei mir ohne fehler compilieren
2. mal schreibst du "levelmatrix" und ein anderesmal "levelMatrix". ich würd mich mal für eins entscheiden
3. dein versuch mit new ist ein ganz schöner pfeffer. ich würd dir mal empfehlen ein c++ buch aufzuschlagen und nachzuschauen was new eigentlich macht
4. length wird mit "th" und nicht mit "ht" am ende geschriebenso, genug der kritik, versuch mal folgendes
int LevelLength = 100; char **LevelMatrix; LevelMatrix = new char*[200]; for(int i=0; i<200; i++) LevelMatrix[i] = new char[LevelLength]; for(int i=0; i<200; i++) delete[] LevelMatrix[i]; delete[] LevelMatrix;
und vergiss nicht nachzulesen was new macht
-
Jester2000 schrieb:
_10 int LevelLength = 100; _20 char **LevelMatrix; ... 758 LevelMatrix = new char*[200]; 759 for(int i=0; i<200; i++) 760 LevelMatrix[i] = new char[LevelLength]; for(int i=0; i<200; i++) delete[] LevelMatrix[i]; delete[] LevelMatrix;
gibt den Fehler:
**[C++ Fehler] HanfmanU.cpp(758): E2277 L-Wert erwartet
[C++ Fehler] HanfmanU.cpp(760): E2277 L-Wert erwartet
**
Genau wie immer
aber nur in dem einen project
-
Hallo,
Kann das sein, dass du LevelMatrix irgendwo schon einmal deklariert hast (z.Bsp. als Funktion) ?
Ciao