STL Vector Problem mit \0
-
So hier die Codestelle:
else { for (int i = 0; i < bytesRecv; i++) { response.data.push_back(buf[i]); }Ja das werden wohl sowas wie Membervariablen von vector sein bei Codeblocks finde ich die jedenfalls im Debug unter dem Namen des vectors/ Vector_base<char Allokator>
Vielen dank im voraus
MfG cobra11freak
-
Wo tritt denn die Speicherverletzung auf? Ist
bufgenügend gross?Du kannst den Vector übrigens einfacher füllen:
std::vector vec(buf, buf + bytesRecv); // bei der Konstruktion vec.assign(buf, buf + bytesRecv); // später
-
Hi die Speicherverletzung tritt in der zlib funktion unkompress auf da der vector die richtige größe zwar als size angibt allerdings soviel gar nicht im vector gespeichert ist...
-
cobra11freak schrieb:
Hi die Speicherverletzung tritt in der zlib funktion unkompress auf da der vector die richtige größe zwar als size angibt allerdings soviel gar nicht im vector gespeichert ist...
Ich denke nicht, dass dein
std::vectoreinen Bug hat. Du solltest dich vielleicht nicht auf den Debugger verlassen, um die Anzahl Elemente zu zählen.Ansonsten, kann es sein, dass du inkonsistente Bibliotheksversionen linkst? Tritt der Fehler auf, wenn du alles nochmals neu kompilierst?
-
Ja da sind einige Bibliotheks Warnungen von der zlib die ich bisher aber ignoriert habe:
||Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized| ||Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized| ||Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized| ||Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized| ||Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"LIBC" /DEFAULTLIB:"OLDNAMES" ' unrecognized|Vielen Dank erstmal
-
Hi
Das Problem könnte vielleicht sein, das ich mit GCC eine .lib datei linke? Vielleicht darf man das nicht...Mfg cobra11freak
-
Ja, die *.libs und *.objs sind AFAIK für Visual Studio Compiler.
Für den GCC gibt es die *.a- und *.o-Dateien.
-
Ja und wie kann ich die konvertieren, weil ich habe bei der zlib keine gefunden oder gibt es da welche. Mensch ich will doch einfach nur ein paar daten dekomprimieren, ist denn das so schwer:(
MfG cobra11freak
-
Wenn du Windows hast, dann nimm doch VS zum kompilieren. Sonst versuch doch, den Quellcode mal selber mit dem GCC zu kompilieren.
-
Ok vielen dank erstmal...
Ich denke ich werde morgen mal versuchen meinen code unter visual studio zu kompilieren, leider hatte ich immer wo ich meinen unter codeblocks erstellten code unter visual c++ zum laufen bringen wollte das Problem das einige Sachen die unter MINGW erlaubt sind dort es nicht sind.MfG ciobra11freak