我在第 57 行遇到分段错误,不确定为什么...:
41 int numRows = C/(K*L);
42 int numCols = K;
43
44 tagArray = (int **) malloc(numRows*sizeof(int)); // creates rows in array with C/K*L rows
45 lruArray = (int **) malloc(numRows*sizeof(int)); // creates rows in array with C/K*L rows
46
47 for(int i = 0; i<numRows;i++)
48 {
49 *(tagArray + i) = (int*) malloc(numCols*sizeof(int)); // fills each row with K columns
50 *(lruArray + i) = (int*) malloc(numCols*sizeof(int)); // fills each row with K columns
51 }
52
53 for(int i = 0; i<numRows; i++)
54 for(int j = 0; j<numCols; j++)
55 {
56 tagArray[i][j] = -1;
57 lruArray[i][j] = -1;
58 }
59
我错过了什么吗?我很有信心我正确定位..
in
tagArray = (int **) malloc(numRows*sizeof(int)); // creates rows in array with C/K*L rows lruArray = (int **) malloc(numRows*sizeof(int)); // creates rows in array with C/K*L rows
您必须为int*
而不是int
分配空间。
不要在 C 中投malloc()
的结果!
44 tagArray = malloc(numRows*sizeof(int *));
45 lruArray = malloc(numRows*sizeof(int *));
46
47 for(int i = 0; i<numRows;i++)
48 {
49 tagArray[i] = malloc(numCols*sizeof(int));
50 lruArray[i] = malloc(numCols*sizeof(int));
51 }