Нет в приведённом коде ошибки. Ты где-то подпортил содержимое массива в промежуточном коде. Между заполнением и удалением работал с массивом и вылетел за границу. А может даже и с соседней переменной. Или size не константа и успел измениться перед удалением.