我正在为一个类(已经提交)做一个项目,但是当我初始化int 2D动态数组时读取访问冲突仍然困扰着我,我不知道是什么导致了它。
class kMeans
{
public:
//xyCoord struct
struct xyCoord
{
int Label;
int xCoordinate;
int yCoordinate;
};
//variables
int K;
xyCoord *Kcentroids;
int numPts;
aPoint *pointSet;
int numRow;
int numCol;
int **imageArray = NULL;
int changeLabel;
//constructor
kMeans(int clusterNum, int numPoints, int row, int col)
{
//initializes the row and column values
numCol = col;
numRow = row;
//Allocate the row and column as the size of the 2D array
imageArray = new int*[row];
for (int i = 0; i < row; i++)
{
imageArray[i] = new int[col];
}
//initializes the 2D array to contain all 0s
for (int i = 0; i < row - 1; i++)
{
for (int j = 0; i < col - 1; j++)
{
imageArray[i][j] = 0; //read access violation occurs here
}
}
//Allocate numPoints as the size of the array
pointSet = new aPoint[numPoints];
numPts = numPoints;
//Allocate clusterNum as the size of the array
Kcentroids = new xyCoord[clusterNum];
K = clusterNum;
//Initialize the labels for each Kcenteroid
for (int i = 0; i < K; i++)
{
Kcentroids[i].Label = i + 1;
}
}
之前没有显示错误,但是当我决定在提交之前再次运行程序时,出现了读取访问冲突,所以我不确定是什么导致它。
答案 0 :(得分:2)
改变这个:
for (int j = 0; i < col - 1; j++)
到此:
for (int j = 0; j < col - 1; j++)
因为您要检查j
的条件,而不是i
。