Great comparison, but C doesn't have operator overloading, C++ does.
And about "automatic variables", if you call malloc() inside a function, you yet must call free().
In this line of reasoning, Java has "automatic variables" too, but only for primitive values.