Zeigerprobleme
-
Aloha,
ich hätte eine sehr interessante Frage bezüglich Zeigern.
Bis jetzt ist mit der Fehler Double Free bei der Anwendung von Zeigern bekannt, daher komme ich auf die Frage, ob es noch irgendwelche Probleme bei der Verwendung von Zeigern entstehen könnten?
Wie könnte man da Abhilfe schaffen? Danke an allen Mitbeteiligten!mfg,
Composer
-
Wenn Double Free das ist, was ich vermute, was du meinst, dann gibts mindestens
Double Free
No Free
No Malloc
Overwrite
Overrun
Chaos
Exceptions Unsafety
und natürlich
Too Less Memory.Will damit sagen, es hat vermutlich wenig Wert, die Fehler zu klassifizieren.
-
hallo volkard,
schön dich hier zu sehen

habe zwar im internet fleißig danach gesucht, aber wusste nicht, dass es so viele fehler bei der benutzung von zeigern vorkommen.
mit double free meinte ich, wo man den selben speicherbereich mehrmals freizugeben versucht.mich würde auch noch interessieren, welche operationen man mit den zeigern machen kann.
bis jetzt habe ich mich nur mit diesem tutorial beschäftigt: http://www.highscore.de/cpp/einfuehrung/zeiger.html
leider steht es nicht sehr viel über die zeigeroperationen.edit:
habe kurz gegoogelt. viel habe ich über die meldungen nicht gefunden.
wie suche ich da am besten? mich würde schon sehr interessieren, was die ganzen begriffe bedeuten.
mfg,
composer
-
Composer schrieb:
habe zwar im internet fleißig danach gesucht, aber wusste nicht, dass es so viele fehler bei der benutzung von zeigern vorkommen.
Die kommen ja auch in der täglichen Programmierpraxis gar nicht vor. Wenn DU fragst, welche Fehler man mit int machen kann, bekommst Du doppelt so viele ebenfalls frei erfundene Namen.
mit double free meinte ich, wo man den selben speicherbereich mehrmals freizugeben versucht.
Ok, dann habe ich richtig geraten.
mich würde auch noch interessieren, welche operationen man mit den zeigern machen kann.
Ich zähle mal die Operatoren auf, die mir so einfallen, die (evtl mittelbar) mit Zweigern gehen:
Zeigerzugriffssachen:
Auswerten mit *, Elementzugriff mit ->, Adresse holen mit &, []Zeigerarithmetik über [] hinaus:
+, +=, ++, -, -=, --, <, <= ==, !=, >=, >Sonstiges:
!, ?:, &&, ||, >>, <<, ,, sizeof, new, delete, die castsAuch hier muß ich sagen, daß die Frage nicht sinnvoll ist. Solche Auflistungen bringen gar nichts.
-
-
Informier dich doch auch im Forum-Artikel über Zeiger.
-
Composer schrieb:
..., ob es noch irgendwelche Probleme bei der Verwendung von Zeigern entstehen könnten? ...
ojah! es gibt noch nen Multiple Alloc Error!
Bsp:char* a = malloc(110); b = malloc(22);hierbei entsteht das Memory Hole Problem, also ein Loch im Speicher, weil der speicherplatz nicht mehr zugänglich ist aufgrund überschriebener adresse durch den zweiten malloc aufruf.
-
Sollte wohl
a = malloc(22);heissen.
-
err0r schrieb:
Multiple Alloc Error!
Memory Hole ProblemVielleicht eher bekannt als Memory Leak.

Es gibt wirklich recht viele Fehlerquellen bei manueller Speicherverwaltung. Ein Grossteil davon sind ungültige Zeiger, z.B. durch vergessene Initialisierung oder Null-Setzung nach dem Löschen des Objekts dahinter. Dann gibt es Array-Überläufe,
deletes auf ungültige Speicherbereiche, Verwechslungen vondeleteunddelete[], Memory Leaks, und so weiter...Wichtig ist nur, dass der allergrösste Teil stark eingeschränkt werden kann, wenn man High-Level-Konstrukte wie z.B. Container verwendet und das Hantieren mit rohen Zeigern auf wenige Stellen beschränkt.