I think I actually understand this one! Because he forgot to put "free" in the loop to free up memory that isn't being used, malloc (which is the memory allocator I think), keeps malloc-ing more memory as the loop repeats. Eventually the memory used exceeds a limit of some kind and causes the crash.
Usually the compiler or run-time environment should catch this [infinite loops] early and produce a warning. Well, unless it's some skaggy interpreter that's not doing its job or was instructed not to do its job for reasons of optimization or sheer laziness, and there are still plenty of ways to fail anyways.