“垃圾价值”是随机的吗?我很确定我的垃圾值只有1可能吗? :○

时间:2014-02-09 16:43:59

标签: c random garbage

好的,我有这个程序:

#include <unistd.h>
#include <stdio.h>
int deCode(int x[2][5])
{
    return x[2][4]; // Heres where the "garbage" comes in.
}    //     calling x[2][4] is non valued function. I can call [0,1][0,1,2,3,4]

int main(void)
{
    int newPosition;
    int x[2][5]={
                {1,3,5,7,9}, //[0][0-4] // row 0
                {2,4,6,8,10} //[1][0-4] // row 1
                };                      //NOTICE NO ROW 2
    printf("%d\n", deCode(&x));
}

我玩这个节目时得到的价值是1。显然你可能不会得到同样的解析。 当我做[2] [1,2,3,5]时,我得到真正的垃圾。我只是想知道是这样的 百万分之一的机会或者我错过了什么?

1 个答案:

答案 0 :(得分:4)

肯定不是随机。这是未定义的。

例如,您可能只是在阅读另一个变量。如果该变量是字符数组\0\0\0\0\0...,那么您将读取大量的零。如果它是int数组1, 1, 1, 1...,您会看到1。

通常,您会看到2^32-1等数字,您可能会很快识别出来。当您意外地将signed int解释为unsigned int时,会发生类似的情况。

调试的一个策略是将所有内存初始化为0xCC。那么你将不会收到原始内存,你会看到0xCC,它很可能会崩溃你的程序而不是默默接受。