If someone has enough SO reputation (I don't), you might mention on pmg's post that casting malloc is a good idea, even though it's not necessary in C. Otherwise, should your code ever move to a C++ environment it'll be an error -- not even a warning.
That sounds like a good reason to omit the cast. Compiling C code as C++ is a bug: You can take valid C code, run it through a C++ compiler without any errors or even warnings being printed, and have it behave differently.
If you want to use C code from a C++ program, you MUST compile it with a C compiler and link it in.
b) a bad idea, because if you forget to include stdlib.h the compiler won't warn you since it assumes that you know what you are doing when you cast an int (the default return type) to whatever pointer type it is.