I am writing a DynamicArray class and got stuck with resize() function. It works as expected when I remove line delete[] temp. But when I don't it seems copying only the last 2 elements. Am I missing something here??
#include <iostream>
#include <initializer_list>
template <typename T, int N>
class DynamicArray
{
private:
    T *m_array;
    size_t m_capacity = N * sizeof(T); // Capacity of the array
    size_t m_size; // Number of added elements
public:
    const int GROWTH_FACTOR = 2;
    DynamicArray(std::initializer_list<T> elements) : m_size(elements.size()) {
        m_array = new T[m_capacity / sizeof(T)];
        std::copy(elements.begin(), elements.end(), m_array);
    }
    DynamicArray() : m_size(0) {
        m_array = new T[m_capacity / sizeof(T)];
    }
    
    void resize() {
        T *temp = new T[m_capacity / sizeof(T) * GROWTH_FACTOR];
        std::copy(m_array, m_capacity / sizeof(T) + m_array, temp);
        m_array = temp;
        delete[] temp;
    }
    void print() {
        for (int i = 0; i < m_size; i++){
            std::cout << m_array[i] << " ";
        }
        std::cout << std::endl;
    }
    
};
int main() {
    DynamicArray<int, 5> array = { 1, 22, 3, 4 };
    array.print();
    array.resize();
    array.print();
    return 0;
}
Output:
1 22 3 4 
0 0 3 4 
 
     
    