Except it requires sizeof a pointer more memory and an extra assignment after the malloc, which is why people use the zero-sized array instead (note this comment was to explain for the grandparent why you would normally prefer a zero-sized array instead).
See [0] for a picture.
[0] http://c-faq.com/aryptr/aryptr2.html