初始化2d动态数组c ++时读取访问冲突

时间:2017-10-20 15:51:33

标签: c++ arrays dynamic-arrays

我正在为一个类(已经提交)做一个项目,但是当我初始化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;
        }
    }

之前没有显示错误,但是当我决定在提交之前再次运行程序时,出现了读取访问冲突,所以我不确定是什么导致它。

1 个答案:

答案 0 :(得分:2)

改变这个:

for (int j = 0; i < col - 1; j++)

到此:

for (int j = 0; j < col - 1; j++)

因为您要检查j的条件,而不是i