How OOP languages differs from procedural languages in terms of memory utilization
<p>I want to understand how OOP programming languages differs from procedural languages in terms of memory utilization. To be more specific, let's assume we are talking about <code>Java</code> and <code>C</code> as examples:</p>

<ol>
<li>Is it true that objects are automatically stored in <code>heap</code> while in procedural languages you have to explicitly define the heap usage such as in C <code>malloc</code>?</li>
<li>If I write a program in C, <code>OS</code> will create a virtual page of this program including heap and stack spaces. If I don't use <code>malloc</code> in my code, this means my program does not utilize the heap allocated for it, is that correct?</li>
<li>Since <code>Stack</code> is used to store local variables and function call addresses, what if a program ran out of Stack space, does <code>OS</code> extend the paging size of this program or it just uses the heap as an extension?</li>
</ol>