rozumiem dlaczego ta powoduje segfault:std :: copy i std :: vector problemem
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
int iArr[5] = {1, 2, 3, 4, 5};
int *p = iArr;
copy(p, p+5, v.begin());
return 0;
}
Ale dlaczego nie to spowodować segfault?
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
int iArr[5] = {1, 2, 3, 4, 5};
int *p = iArr;
v.reserve(1);
copy(p, p+5, v.begin());
return 0;
}
@KennyTM druga przestrzeń rezerwowa dla 1 elementu –
Istnieje dobra odpowiedź związana z różnymi rodzajami niezdefiniowanego zachowania w C++: http://stackoverflow.com/questions/367633/what-are-all-the-common- undefined-behaviour-that-ac-programmer-should-know-abo/367662 # 367662 –
Dlaczego po prostu nie użyjesz 'copy (p, p + 5, back_inserter (v));' i unikniesz całego tego bałaganu? –