回答
它不是未分配的。所有的类/结构都会收到它们的默认值。对于一个字符串,它是null
。
如果它是一个局部变量,那么优化将倾向于将其删除。如果它的一个实例变量,然后将分配内存(我认为,C#规范不清楚)。
为什么你说“它不是未分配的”。如果它是一个局部变量,并且如果我尝试对名称做任何操作,编译器将显示“使用未分配的变量”。 – 2015-02-05 15:07:17
@ShamseerKSmr它的错误是完全正确的;你不能使用未分配的变量。您需要首先为其分配一个值。 – Servy 2015-02-05 15:20:26
方法的局部变量不保留任何内存,寄存器分配给它取决于它如何使用以及如何使用其他变量。只要它没有被使用,就没有寄存器被分配给它。
在一个方法中可以有大量的变量,但是CPU中的寄存器数量有限,所以编译器会优化您的代码以重新使用寄存器。有关更多信息,请参见Register allocation。
不,string name;
不是保留任何内存。
- 1. 变量的内存分配
- 2. 变量的内存分配
- 3. C#未分配变量?
- 4. C++可变内存分配
- 5. 在C/C++中的内存分配
- 6. 未被访问的变量的Java对象内存分配
- 7. 变量的块结构内存分配
- 8. C++中的内存分配
- 9. C中的内存分配
- 10. C++中的内存分配
- 11. 未初始化的变量内存分配
- 12. 在什么时候内存被分配给C++中的一个常量变量?
- 13. 分配给未分配的变量
- 14. C++分配常量引用实例变量(内存问题?)
- 15. 在C/C++中分配内存失败
- 16. JSON对象内存分配vs变量
- 17. 静态变量内存分配
- 18. 内存泄漏在C /内存分配++
- 19. 在C#中创建一个类,使用未分配的变量
- 20. 在C#应用程序中使用“未分配的变量”
- 21. 问题在C#中未分配的局部变量
- 22. 内存分配在C
- 23. 内存分配在C#
- 24. 内存分配在obj c
- 25. 内存分配的局部变量用C
- 26. C内存分配
- 27. 内存分配,C++
- 28. C++分配内存
- 29. 将内存分配给已分配的变量?
- 30. 位置在内存中的变量,C
如果没有在任何地方使用它,它可能会被编译器 – 2015-02-05 14:42:17
剥离,这通常是声明变量的原因,但如果从未使用它,编译器可能会优化它。 – DLeh 2015-02-05 14:42:34
它是一个类字段或局部变量?根据您使用代码的地方,答案是不同的。 – 2015-02-05 14:43:27