LINUX.ORG.RU

Определение переменной в цикле

 ,


0

2

Корректен ли такой цикл?

	while (u->msec > 50)
	{
		local_state_t temp;
		usercmd_t split;

		split = *u;
		split.msec /= 2.0;
		CL_RunUsercmd(from, &temp, &split, runfuncs, pfElapsed, random_seed);

		from = &temp;
		u = &split;
	}
Конечно очевидно, что в большинстве реализаций from так и будет указывать на temp, а он сохранит предыдущее значение. Но не выйдет ли здесь лютого UB?

★★★★★

6.2.4 Storage durations of objects

If an object is referred to outside of its lifetime, the behavior is undefined. The value of a pointer becomes indeterminate when the object it points to (or just past) reaches the end of its lifetime

Про время жизни автоматических переменных написано там же чуть ниже

Gvidon ★★★★
()
Последнее исправление: Gvidon (всего исправлений: 1)

Еще как выйдет. temp на выходе из цикла уничтожается, и from указывает на неинициализированную формально память.

CatsCantFly
()

Нет, некорректен. Просто вынеси переменную из цикла и всё будет ок. Не вижу причин не сделать так.

KivApple ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.