使用malloc函数的随机数

时间:2019-01-21 23:14:29

标签: c

为什么矩阵随机数的每一行的第一行之后没有数字?为什么它们为零?例如,如果我打印此矩阵的一行,则会得到4 0 0 0 0,但我应该获取4之后的数字作为随机数。

void readfile(FILE *input,int **matrix){
    int i=0, num;
    while(fscanf(input, "%d ", &num) == 1){
        matrix[i] = malloc((num+1)*sizeof(int));
        matrix[i][0] = num;
        i++;
    }
}

1 个答案:

答案 0 :(得分:6)

  

为什么矩阵随机数的每一行的第一行之后都不是数字?

为什么要这样?

是的,malloc返回一个新分配的未初始化内存块,但是没有人说它必须是随机的。

实际上,通常是在进程开始you are going to get blank pages时,才由操作系统清零并提供给您的进程(操作系统出于安全原因无法从其他进程中回收页面而没有将其清空),而后来{{3 }},因此通常包含您自己程序中的旧数据。

所有这些都是严格的非合同性质,并且经常被违反-例如,所谓的“调试堆”通常以已知模式(you are more likely to get back pages that your process has freed)填充空闲页面以发现未初始化内存的使用情况。 / p>

长话短说:不要对malloc提供的内存内容做任何假设。