【发布时间】:2016-08-27 22:45:08
【问题描述】:
当我尝试访问我的矩阵 Line*** 时,我遇到了段错误。
像(matrix[i][j]->vbit == 00),{int vbit} 这样的简单操作会给我一个分段错误。我假设它在构造函数中,但我似乎找不到问题。有人看吗?
Line ***getSets(int width, int height){
int i;
int j;
Line *temp;
Line line;
printf("Make %d sets with %d lines\n",height,width);
Line*** matrix = (Line***)calloc(height,sizeof(Line**));
for(i=0;i < height;i++){
matrix[i] = (Line**)calloc(width,sizeof(Line*));
}
/// Set all vbits to 0
for(i = 0; i < height;i++){
for(j = 0;j <width; j++){
temp = matrix[i][j];
temp = malloc(sizeof(Line));
temp->vbit = 0;
temp->tag = 0;
temp->lastUsed = 0;
}
}
return matrix;}
【问题讨论】:
-
一个有 seg 错误问题的 3 星程序员。想象一下!
-
不要将您的代码作为图片发布。请将您的代码作为文本直接发布在您的问题中。
-
您没有将分配的缓冲区分配给
matrix[i][j],它未初始化。 -
不要发布代码图片,发布实际代码。话虽如此,您的问题很明显:在您的内部循环中,您从矩阵条目分配给
temp,然后立即重新分配给temp,使第一个分配无用。相反,您需要在为矩阵条目分配存储空间后将 fromtempto 分配给它。 -
temp = matrix[i][j];temp = malloc(sizeof(Line));-->temp = matrix[i][j] = malloc(sizeof(Line));
标签: c arrays pointers matrix segmentation-fault