具有二维char指针数组的断点

时间:2015-04-21 09:19:36

标签: c++ arrays pointers

Console application has triggered a breakpoint.

所以我有这个2D char指针数组,我也传递给其他函数但是当我尝试删除数组时,我得到一个断点错误。我猜测某些函数没有正确地保存指针后面的数据。

void toevoegenL()
{
    int keuze;
    int index = 0;
    int indey = 2;
    char** text;
    text = new char *[20];
    for (int i = 0; i <20; i++)
        text[i] = new char[10];
    fillspacearray(text);
    leverancier leverancier1;
    leverancier1.levID = instellenL();


    try
    {
        invoerschermL();
        gotoxy(22, 5); std::cout << leverancier1.levID;
        texteditor(22, 6, 4,text);
        cout << text[2][3];
        chararray_to_leverancier(leverancier1, text);
        wegschrijvenL(leverancier1);

        leverancier1.levID++;
        invoerschermL();
        gotoxy(22, 5); std::cout << leverancier1.levID;
        updatenL(leverancier1.levID);
    }
    catch (const std::exception& e)
    {
        cout << "er is een fout gebeurt, u kunt opnieuw proberen"<<endl;
        system("Pause");
        invoerschermL();
        gotoxy(22, 5); std::cout << leverancier1.levID;

    }

    for (int i = 0; i <20; i++)
        delete[] text[i];
    delete[] text;
}

这是断点发生的代码段。

delete[] text[i];

特别是这条线。

我也不确定我是否正确地将数组传递给其他函数。

像这样:

void print2DArray(char** A, int width, int height)

或者像这样:

void print2DArray(char**& A, int width, int height)

1 个答案:

答案 0 :(得分:0)

正如您已经意识到的那样,问题是已经过了22而不是20到gotoxy。 在未来的代码中防止这种情况的一种方法是将这些值定义为常量,无论是使用#define还是static const变量(在其他StackOverflow问题中,您可以看到每个值的参数: static const vs #define)。 这样,您可以这样做:

#define NUMBER_OF_STRINGS 20
#define LENGTH_OF_STRING 10
char** text;
text = new char *[NUMBER_OF_STRINGS];
for (int i = 0; i <NUMBER_OF_STRINGS; i++)
    text[i] = new char[LENGTH_OF_STRING];
...
gotoxy(NUMBER_OF_STRINGS, 5);

编辑:我误解了你在问题评论中所说的问题。我不认为带有删除的for循环是问题所在。