当我们创建一个变量,没有初始化它,然后一些(随机)被叫号码的垃圾值分配给它。
- 这个数值是如何赋给变量?
- 这背后有什么整体的概念/机制?
- 这是否只发生在C 2
当我们创建一个变量,没有初始化它,然后一些(随机)被叫号码的垃圾值分配给它。
垃圾值未分配的,而该值已经存在。 当你分配你保留一块内存变量 - 直到你覆盖它内存包含任何“随机”的信息在那里了。
作为一个比喻,认为分配就像买了一块土地的变量 - 直到你用它做的东西(比如建房子)的土地将只是有任何垃圾已经坐在那里(像一个老房子摇摇欲坠)。
有些语言会自动补零新分配的变量 - 这需要时间做。 在更多的“做自己动手”的语言,如C这种额外behavoir没有保证的广告(虽然在某些系统上的内存不管语言的清除,例如,作为一种安全措施)
内存使用,并在你的应用程序的不同点重用。 例如,作为应用程序的调用堆栈的增长和收缩在内存中的相同位置可能会被覆盖很多次。 需要记住的是,作为一块内存被放弃它没有归零,所以如果你没有在内存中指定该设立一个新的初始值,当你再次使用它,你会得到老,“垃圾”的价值。
有些语言和结构,实现做,因为它是使用默认初始化的内存。 别人不,所以读你的语言的文档仔细知道会发生什么是重要的。
Nobody explicitly assigns a grabage value. If you create a variable, only location of the variable is determined, and not its value. Thats why we are initializing it. The garbage value might come from some previous operations over the same memory by old processes! So it can hold anything. I think it holds to pretty good number of languages. I am not sure about the list! :)
当我们创建一个变量,没有初始化,然后什么也没有发生。 当您从变量读值从内存中变量现在位于获取数据。 它可能看起来像垃圾/随机值,只是因为变量被放置在内存中具有某种程度的随机性。
C类标准说:
实施:在实施详细检查https://stackoverflow.com/a/36725211/895245摘要:
.bss