我对此代码感到有点困惑,我正在努力理解它崩溃的原因。
#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;
}
当这段代码运行时,我得到:
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]
...
我不明白通话的影响是什么。 有人会开导我吗?
谢谢,
-daniel