Basically i have this code:
===========================
A.h
class A {
    int state = -1;
public:
    void print();
    void set(int i);
};
===========================
A.CPP
void A::print() {
    cout<<state<<endl;
}
void A::set(int i) {
    state = i;
}
===========================
MAIN
int main() {
    A a[2];
    a[0].set(1);
    a[1].set(2);
    a[0].print();
    a[1].print();
    a[2].print();
    a[3].print();
    return 0;
}
And this is what is shown in the console:
1
2
1542598400
1919717043
And if i change main in this way:
int main() {
    A a[1]; // <---- CHANGE
    a[0].set(1);
    a[1].set(2);
    a[0].print();
    a[1].print();
    a[2].print();
    a[3].print();
    return 0;
}
This is shown:
*** stack smashing detected ***: <unknown> terminated
1
2
1054043105
-2010162576
I don't understand what's happening
