Im alten C-Standard von 1989 kann man Funktionen verwenden, die vorher nicht deklariert wurden. Der Compiler geht in diesem Fall davon aus, dass die Funktion einen int zurückgibt.
Wenn also jemand die alloc-Funktion verwendet, ohne vorher einen Prototypen angegeben zu haben (z.B. weil er vergessen hat, den Header einzubinden), und dabei auf einer Plattform arbeitet, auf der int und void-Zeiger nicht gleich groß sind, kann es sein, dass er sich den Stack zerschießt.
Ohne den Cast kommt es dann zumindest zu einer Warnung, z.B. von Visual C++:
Mit dem Cast wird genau diese Warnung aber unterdrückt. Der Code compiliert dann ohne Probleme, und fliegt dir dann zur Laufzeit um die Ohren, wenn du Glück hast. Wenn du Pech hast, passieren irgendwelche komischen Dinge an ganz anderen Stellen im Code.