Variable Declaration & Memory Allocation

前端 未结 2 1534
轮回少年
轮回少年 2021-01-28 15:41

I want to know whether memory is allocated during the local variable declaration process.

Suppose I write this code inside function, int a =10; memory i

相关标签:
2条回答
  • 2021-01-28 16:30

    Local variables are usually stored on stack, so indeed bytes are allocated for int:

    int a;
    

    Because it simply uses default value (0), so it is the same as:

    int a = 0;
    

    int is a value type, so on stack is stored its value. If you would create local variable with reference type:

    SomeClass a;
    

    Then on stack it would be allocated only reference (with value null, as it is default value for reference types). For more information you can refer this question

    0 讨论(0)
  • 2021-01-28 16:35

    When you call a method, space for each local variable is allocated on the stack.

    So if you declare an int variable in a method, it's stack frame will take up an extra 4 bytes of memory.

    No additional memory is used anywhere else, and it is cleaned up when the method returns.

    Something important to understand here is that MSIL does not support declaring a property just anywhere in a method. Whenever you declare a variable in C#, the declaration is moved to the method header in the compiled bytecode. Every variable is allocated when the method is called.

    0 讨论(0)
提交回复
热议问题