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)
答案 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循环是问题所在。