Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

C++ Problem mit Speicheradressierung

PingOfDeath / 3 Antworten / Baumansicht Nickles

Hi,

der Code:

char buf128[128];
memset(&buf128, 0, sizeof(buf128));

Das Problem:

buf128 hat nach dem memset nicht überall 0 stehen, sondern in den ersten 4 Stellen etwas anderes (also "Speicherüberreste").

Wenn ich die Code-Optimierung ausschalte (Release), so funktioniert memset - mit Optimierung geht es schief.

Jemand eine Idee???

PS: Ich habe ein neues Projekt angelegt und dieses Problem mal dort importiert - dort funktioniet die Funktion - ich komm nicht mehr weiter :-(

(Visual Studio 2005 / Windows 2000 SP4)

MfG. PingOfDeath

bei Antwort benachrichtigen
clausg PingOfDeath „C++ Problem mit Speicheradressierung“
Optionen

Richtig: memset (buf128, 0, sizeof(buf128));

buf128 ist bereits die Adresse deines Puffers. &buf128 ist die Adresse deiner Variablen (also die Adresse der Adresse des Puffers).

Claus

bei Antwort benachrichtigen
PaoloP PingOfDeath „C++ Problem mit Speicheradressierung“
Optionen

nebenher gesagt würde ich über sizeof(char) gehen um portabel zu bleiben.

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
PingOfDeath Nachtrag zu: „C++ Problem mit Speicheradressierung“
Optionen

Danke für Eure Antworten.

Der Fehler lag ganz woanders - der Buffer wurde zu weit beschrieben - in einer Unterfunktion hatte ich nicht bedacht, dass Char-Arrays (eigentlich ja Strings) auch eine 0-Terminierung haben ......

Gruß, PingOfDeath

bei Antwort benachrichtigen