gpt4 book ai didi

linux - Solaris 平台上没有垃圾值,代码简单

转载 作者:太空宇宙 更新时间:2023-11-04 04:57:04 25 4
gpt4 key购买 nike

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

# 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);
}

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

最佳答案

is there some difference between the two platforms

当然有很多不同之处。您无法运行为其中一个编译的可执行文件,因此这应该是显而易见的。即使您在 x86 平台上运行这两个平台也是如此。如果您在 x86 上运行 Linux 并在 SPARC 硬件上运行 Solaris,则差异会更大。

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

关于linux - Solaris 平台上没有垃圾值,代码简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43388360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com