Рассмотрим следующий код.
#include <stdio.h>
#include <vector>
#include <iostream>
struct XYZ { int X,Y,Z; };
std::vector<XYZ> A;
int rec(int idx)
{
int i = A.size();
A.push_back(XYZ());
if (idx >= 5)
return i;
A[i].X = rec(idx+1);
return i;
}
int main(){
A.clear();
rec(0);
puts("FINISH!");
}
Я не мог понять, почему код дает ошибку сегментации в Linux (IDE используется: Code::Blocks), тогда как в Windows (Используется IDE: Visual С++), это не так.
Когда я использовал Valgrind, чтобы проверить, что на самом деле проблема, я получил этот результат.
Я получил Invalid write of size 4
в четырех разных местах. Тогда почему не произошел сбой кода при использовании Visual С++?
Я что-то пропустил?