vector subscript out of range越界问题

问题遇到的现象和发生背景

一运行到最后这一行就报错

用代码块功能插入代码,请勿粘贴截图
vector>obstacleImgs;//存放每个障碍物的各个图片,
typedef struct obstcale
{
    obstacle_type type;//障碍物类型
    int imgIndex;//当前显示的图片序号
    int x, y;//障碍物坐标
    int speed;
    int power;
    bool exist;
}obstacle_t;
            obstacle_t obstacles[OBSTACLE_COUNT];
void createObstacle()
{
int i;
for (i = 0; i < OBSTACLE_COUNT; i++)
    {
        if (obstacles[i].exist == false)
        {
            break;
        }
    }//这里的括号删了,放在void createObstacle的最后,代码就能跑起来,但似乎这个函数写的内容就无效了
        if (i >= OBSTACLE_COUNT)
        {
            return;
        }
        obstacles[i].exist = true;
        obstacles[i].imgIndex = 0;
        obstacles[i].type = (obstacle_type)(rand() % OBSTACLE_TYPE_COUNT);
        obstacles[i].x = WIN_width;
        
        obstacles[i].y = 345 + 5-obstacleImgs[obstacles[i].type][0].getheight();//后面还有一些没写进来,调试到这里,下一步就报错

运行结果及报错内容

img

vector subscript out of range

我的解答思路和尝试过的方法

第一次接触vector,查了好久也没弄明白是哪里越界

我想要达到的结果

咋解决啊,求能人志士帮忙,感激不尽

你把最后一行那几个下标值打出来看看 在最后一行的上面打