为什么矩阵随机数的每一行的第一行之后没有数字?为什么它们为零?例如,如果我打印此矩阵的一行,则会得到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++;
}
}
答案 0 :(得分:6)
为什么矩阵随机数的每一行的第一行之后都不是数字?
为什么要这样?
是的,malloc
返回一个新分配的未初始化内存块,但是没有人说它必须是随机的。
实际上,通常是在进程开始you are going to get blank pages时,才由操作系统清零并提供给您的进程(操作系统出于安全原因无法从其他进程中回收页面而没有将其清空),而后来{{3 }},因此通常包含您自己程序中的旧数据。
所有这些都是严格的非合同性质,并且经常被违反-例如,所谓的“调试堆”通常以已知模式(you are more likely to get back pages that your process has free
d)填充空闲页面以发现未初始化内存的使用情况。 / p>
长话短说:不要对malloc
提供的内存内容做任何假设。