I was trying to create vector like class. Here is my code
#include <bits/stdc++.h>
using namespace std;
template<class t>
class vec{
    t *start;
    int size=0;
    public:
      void add_value(t a){
            *(start+(sizeof(t)*size)) = a;
            cout << (start+(sizeof(t)*size))<< " = "<< *(start+(sizeof(t)*size))<<endl;
            size++;
            // cout << start<< endl;
        }
        void operator [](int i){
            cout << (start+(sizeof(t)*i))<< " = "<< *(start+(sizeof(t)*i))<<endl;
        }
        int length(){
            return size;
        }
};
int main(){
    vec<int> t;
    cout << t.length()<<endl;
    t.add_value(8);
    t.add_value(10);
    cout << t.length()<<endl;
    t[1];
}
This gives me correct output.
0
0x7fff0fe9b5d0 = 8
0x7fff0fe9b5e0 = 10
2
0x7fff0fe9b5e0 = 10
But when declare a int variable in main function like.
int main(){
    int i=0;  //newline
    vec<int> t;
    cout << t.length()<<endl;
    t.add_value(8);
    t.add_value(10);
    cout << t.length()<<endl;
    t[1];
}
output.
0
Segmentation fault (core dumped)
I also tried printing address of start variable and new int variable int those are different.
 
     
    