Exemplo

int main(int argc, char* argv[])
{
long *Array = (long*) malloc(N * sizeof(long*));

long *Array = (long*) realloc(Array, N);

return 0;
}

Solução
Utilize o método sizeof() para alocar o número correto de bytes.

int main(int argc, char* argv[])
{
long *Array = (long*) malloc(N * sizeof(long));

long *Array = (long*) realloc(Array, N * sizeof(long));

return 0;
}