我正在为一个类做一个项目(已经提交),但是当我初始化 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;
}
}
之前没有出现过错误,但是当我决定在提交之前再次运行程序时,出现了读取访问冲突,所以我不确定是什么原因造成的。
改变这个:
for (int j = 0; i < col - 1; j++)
对此:
for (int j = 0; j < col - 1; j++)
因为您要检查 的条件j
,而不是i
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句