My mental model of memory in C is that it is unitialized unless otherwise specified. Certainly in higher level languages (e.g., Java, Pyton, Ruby), we expect memory to be initialized (otherwise garbage collection doesn't work).
Coming to C with a mental model of memory from another language is a recipe for security problems.