La idea es buena, pero vamos a ver los fallos.
Creas un array dinámico para alojar la inversa del array que pasas y te mueves en él mediante aritmética de punteros, haciendo que el puntero mismo vaya variando. Cuándo lo quieres liberar con delete has perdido el puntero original que apunta al inicio de bloque con lo que fallas. La solución es crear un puntero permanente que guarde esa posición y usar otro para moverte por el array, tal que así:
arrayPtr2 = new int[size];
arrayPtr2pointer = arrayPtr2;
Ahora usas uno para moverte como te movías y el otro para liberar con delete.
Para llevar arrayPtr hasta el final hazlo con una simple operación, así quitas código y tiempo de proceso:
En vez de
if (i == 0)
for (int j = 0; j < size; j++)
arrayPtr++;
usa
arrayPtr += size-1;
La orden para eliminar un array es mediante
delete [] identificardor_de_array
y no con
delete identificador_de_array
Las órdenes para preparar el array arrayPtr y para realizar la copia del arrayPtr2 al arrayPtr sácalas del bucle de generación del arrayPtr2. Son trabajos diferentes.
La función debería quedarte algo como esto:
void reverse(int *arrayPtr, int size) {
int *arrayPtr2pointer = new int[size];
int *arrayPtr2 = arrayPtr2pointer;
arrayPtr += size - 1;
for (int i = 0; i < size; i++) {
*arrayPtr2 = *arrayPtr;
arrayPtr--;
arrayPtr2++;
}
arrayPtr++; // Necesario porque en el último bucle se actualizan estos dos punteros
arrayPtr2--; // y sobrepasan los limites. Hay que regresarlos a su lugar.
arrayPtr2 = arrayPtr2pointer;
for (int i = 0; i < size; i++) {
*arrayPtr = *arrayPtr2;
arrayPtr++;
arrayPtr2++;
}
delete [] arrayPtr2pointer;
}
Si la función no es para estudiar punteros, ni memoria dinámica y es solamente para invertir un array puedes dejar a un lado todo esto y usar código más normal.
Incluye en tu código lo siguiente:
#define SWAP(X,Y) { \
(X) ^= (Y); \
(Y) ^= (X); \
(X) ^= (Y); \
}
#define ARRAY_LENGTH(X) sizeof(X)/sizeof(X[0])
void reverse(int array[], size_t size) {
int i;
for(i = 0; i < size / 2; ++i) {
SWAP(array[i], array[size - i - 1]);
}
}