Ich bin etwas verwirrt über diesen Code und ich versuche zu verstehen, warum es abstürzt.Warum stürzt diese Funktion ab, wenn sie mehr als einmal aufgerufen wird?
#include <iostream>
#include <vector>
std::string print_array_string(std::vector<std::string> ar)
{
std::cout << "Vector size:" << ar.size() << " values:";
for(auto &i: ar) {
std::cout << i << "; ";
}
std::cout << std::endl;
}
int main() {
std::vector <std::string> ar {"ab", "cd", "ef"};
print_array_string(ar);
print_array_string(ar);
return 0;
}
Wenn dieser Code ausgeführt wird, erhalte ich:
Array size:3 values:ab; cd; ef;
*** Error in `/tmp/test': free(): invalid pointer: 0x00000000006040d8 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x77725)[0x7f8f7898c725]
/lib/x86_64-linux-gnu/libc.so.6(+0x7ff4a)[0x7f8f78994f4a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f8f78998abc]
/tmp/test[0x40115d]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f8f78935830]
/tmp/test[0x400df9]
...
ich nicht verstehen, was die Auswirkungen des Anrufs tun. Würde mich jemand aufklären?
danke,
-Daniel
Die Funktion soll 'string' zurückzukehren, aber nichts, undefiniertes Verhalten zurückzukehren. – AlexD
Ha. Vielen Dank. So ein dummer Fehler. – dmg
@AlexD Das sollte als Antwort geschrieben werden, nein? –