C++动态创建指针空间问题

问题遇到的现象和发生背景

有人可以看看我这个问题吗,我想实现动态创建一维数组,并根据输入的值写入或删除一维数组指针的数据

// 一维数组处理
class array_dispose
{
private:
    int array1_Size = 0;        // 元素个数
    int array1_delete = 0;      // 匹配的元素位置
    int array1_operation;       // 操作(0:删除、1:添加)
public:
    int* array1 = NULL;          // 当前数组指针
    int* array1_cache = NULL;    // 缓存数组指针
    // 分配内存空间
    void dispose(int lines)
    {
        // 对比:需增加、需删除
        for (int i = 0; i < array1_Size; i++)
        {
            if (array1[i] == lines) // 需要删除
            {
                array1_operation = 1;
                array1_delete = i;
                break;
            }
            else                    // 需要增加
            {
                array1_operation = 0;
            }
        }

        if (array1_operation == 0 || array1 == NULL)
        {
            cout << "增加" << endl;
            array1_Size++;
            delete[] array1;
            array1 = new int[array1_Size];
            if (array1_cache != NULL)
            {
                memcpy(array1, array1_cache, _msize(array1_cache));
            }
            array1[array1_Size - 1] = lines;
            delete[] array1_cache;
            array1_cache = new int[array1_Size];
            memcpy(array1_cache, array1, _msize(array1));
        }
        else if(array1_operation == 1)
        {
            cout << "删除" << endl;
            array1_Size--;
            delete [] array1;
            array1 = new int[array1_Size];
            memcpy(array1, array1_cache, array1_delete * sizeof(int));
            memcpy(array1 + array1_delete, array1_cache + array1_delete + 1, _msize(array1_cache) - array1_delete * sizeof(int));
            delete [] array1_cache;
            array1_cache = new int[array1_Size];
            memcpy(array1_cache, array1, _msize(array1));
        }
        array1_operation = 0;
        // 输出所有值
        for (int i = 0; i < array1_Size; i++)
        {
            cout << array1[i] << endl;
        }
    }
};

应该用memmove而不应用memcpy