关于堆损坏的错误 我写了一个C++程序,实际上是一个游戏。 我收到了以下错误:

关于堆损坏的错误 我写了一个C++程序,实际上是一个游戏。 我收到了以下错误:,c++,heap-corruption,C++,Heap Corruption,Windows已在bla bla中触发断点 有人能帮我吗? 这是代码,但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); i

Windows已在bla bla中触发断点

有人能帮我吗?
这是代码,但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;
        }
    }
}
void r\u运动(字符**映射,整数大小)
{
int参数i,参数j,游戏者i,游戏者j;
int*r\u location\u i=新int[1],*r\u location\u j=新int[1];
玩家查找器(地图、大小、玩家i、玩家j);
int r_num=机器人查找器(地图、大小、r_位置i、r_位置j);
对于(inti=1;iplayer_i)参数_i=-1;
if(r_location_i[i]player_j)参数_j=-1;

如果(r_location_j[i]好的,首先,看看这个:

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
    ...
  }
int*r_location_i=新的int[1]。。。;
...
对于(inti=1;iplayer_i)参数_i=-1;//在数组外部读取
...
r_location_i[i]=r_location_i[i]+参数_i;//在数组外部写入
...
}

返回并研究数组。在您确切知道上面的代码有什么问题之前,不要触摸另一个指针。

因此,您不会向我们显示完整的错误,或者告诉我们错误实际发生在哪一行,并且您没有尝试简化代码以找出导致问题的功能。您确定
map
指向错误吗有效数组?乍一看,我会说你在用指针做一些可怕的事情,为了安全起见,可能应该将它们封装在类中,和/或使用STL容器。