Ciekawe, że ci się to uruchamia bez błędu:
*** Error in `./a.out': free(): invalid pointer: 0x00000000006021a0 ***
Aborted
Wskaźniki gdzieś skopałeś, a to:
sizeof(OldTailArray)/sizeof(*OldTailArray)
nie jest zalecany sposób wydobywania rozmiaru, istnieją sytuacje kiedy nie działa tak jak powinien