ошибка о повреждении кучи

Я написал программу на C ++, на самом деле это игра.
Я получил эту ошибку:

Windows вызвала точку останова в бла-бла …

Кто-нибудь может мне помочь?
Это код, но ошибка возникает в строке AAA:

void r_motions(char **map,int size)
{
int parameter_i,parameter_j,player_i,player_j;
int *r_location_i = new int[1],*r_location_j = new int[1];
player_finder(map,size,player_i,player_j);
int r_num = robots_finder(map,size,r_location_i,r_location_j);
for(int i=1;i<=r_num;i++)
{
parameter_i =0;
parameter_j =0;
if(r_location_i[i]>player_i) parameter_i = -1;
if(r_location_i[i]<player_i) parameter_i =  1;
if(r_location_j[i]>player_j) parameter_j = -1;
if(r_location_j[i]<player_j) parameter_j =  1;
map[r_location_i[i]][r_location_j[i]] = '.';
r_location_i[i] = r_location_i[i]+parameter_i;
r_location_j[i] = r_location_j[i]+parameter_j;
}
for(int i=1;i<=r_num;i++)
{
switch (map[r_location_i[i]][r_location_j[i]])
{
case '.':
map[r_location_i[i]][r_location_j[i]] = '+';
break;
case '@':
map[r_location_i[i]][r_location_j[i]] = '+';
print_map(map,size);
cout << "Robots win ." << endl;
sleep(1000);
exit(1);
break;
case '+':
map[r_location_i[i]][r_location_j[i]] = '*';
break;
case '*':
map[r_location_i[i]][r_location_j[i]] = '*';
break;
default: cout << "what r u doin' ??";
break;
}
}
}

-3

Решение

Хорошо, только для начала, посмотрите на это:

int *r_location_i = new int[1], ...;
...
for(int i=1;i<=r_num;i++)
{
parameter_i =0;
...
if(r_location_i[i]>player_i) parameter_i = -1; // reading outside the array
...
r_location_i[i] = r_location_i[i]+parameter_i; // writing outside the array
...
}

Вернитесь и изучите массивы. Не трогайте другой указатель пока вы не знаете точно, что не так с кодом выше.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]