Предупреждение C6386 указывает на потенциальное переполнение буфера при записи в массив `bullets_t`. Это может произойти, если `bulletsNumber` равно нулю или отрицательному числу.
Чтобы избежать этого предупреждения следует добавить проверку перед созданием массива `bullets_t`. Если оказывается равным нулю или отрицательным то необходимо изменять это значение на другое,
void shoot() {
if (player.x + 2 > mWidth) return;
Bullet* bullets_t;
if (bulletsNumber <= 0) {
bullets_t = new Bullet[1];
bulletsNumber = 1;
} else {
bullets_t = new Bullet[bulletsNumber + 1];
for (int i = 0; i < bulletsNumber; i++) {
bullets_t[i] = bullets[i];
}
bulletsNumber++;
}
bullets_t[bulletsNumber - 1] = { player.x + 2, player.y };
delete[] bullets;
bullets = bullets_t;
}
struct Bullet {
float x = 0;
float y = 0;
};
void shoot() {
if (player.x + 2 > mWidth) return;
Bullet* bullets_t = new Bullet[bulletsNumber + 1];
for (int i = 0; i < bulletsNumber; i++) {
bullets_t[i] = bullets[i];
}
bullets_t[bulletsNumber] = { player.x + 2, player.y };
delete[] bullets;
bullets = bullets_t;
bulletsNumber++;
}
Теперь предупреждение должно исчезнуть