C语言 错位 2D 阵列时出现分段错误?



我在第 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      }

相关内容

  • 没有找到相关文章

最新更新