Solaris平台中没有垃圾值,代码简单

时间:2017-04-13 09:23:25

标签: linux garbage-collection solaris

我在笔记本电脑上运行了一个简单的代码(Ubuntu Mate 64 bit)

# include <stdio.h>

int main()
{
    int i,j,l=0,swap,n,k,a[100],b[100],count;

    printf("%d", count);
}

正如预期的那样,这应该返回垃圾值,它正是这样做的。 我也跑了好几次。我每次都得到不同的结果,这表明每次都分配了新的内存。输出是这样的。

32576
33186
0
29318
0
32111
0

然而,请注意,在某些情况下,我得到零

现在,这个相同的代码在solaris服务器中执行。我在连接到这个solaris服务器的瘦客户机上运行它。但是这次,程序只打印了0,无论我执行了多少次程序。我从另一个帐户登录到服务器,但仍然得到了相同的结果。 我认为solaris机器有某种垃圾收集器,但事实并非如此。当我运行另一个程序时,我得到了垃圾值。

# include <stdio.h>

int main()
{
    int i;

    printf("%d", i);
}

我的问题是,这两个平台之间是否存在一些差异,还是我只是随机性的受害者?

1 个答案:

答案 0 :(得分:1)

  

两个平台之间存在一些差异

当然有很多不同之处。你不能运行为另一个编译的可执行文件,所以这应该是显而易见的。即使你在x86平台上运行,也就是这样。如果您在x86上运行Linux并在SPARC硬件上运行Solaris,则差异会更大。

无论如何,读取未初始化的变量是未定义的行为。见(Why) is using an uninitialized variable undefined behavior?