Это просто предупреждение, но оно дает хороший совет. Какой это файл содержит более num
элементов? Предупреждение говорит вам, что вы должны убедиться, что вы не пишете после конца массива. В частности:
Это предупреждение указывает, что доступный для записи экстент указанного буфера может быть меньше, чем индекс, используемый для записи в него. Это может вызвать переполнение буфера. [msdn]
Этот код не выдает предупреждение (VS2019):
int x, y;
while (i < num && (file >> x >> y)) {
points[i].x = x;
points[i].y = y;
i++;
}
Еще больше проверки ошибокдобавить. Что делать, если file >> num;
не удается? Что если num
отрицательно? Что если points = new point[num];
не удастся (вернет nullptr
)?