Будет ли C повторно использовать память локального блока var после выхода из области видимости?
(Я считаю, что этот вопрос технически отличается отМожно ли получить доступ к памяти локальной переменной вне ее области? потому что это C вместо C ++.)
Я знаю, что в C вы можете поместить локальную переменную в блок, и она будет ограничена этим блоком:
#include <stdio.h>
int main() {
{
int x = 5;
printf("x = '%d'\n", x);
}
// can't see x anymore
}
Мой вопрос заключается в том, все же БЕЗОПАСНО ли использовать эту память до конца функции? Является ли это WISE с точки зрения практики проектирования / кодирования, это отдельный вопрос, но это неопределенное поведение или я могу рассчитывать на то, что память останется на месте? Например:
#include <stdio.h>
int main() {
int *ptr;
{
int x = 5;
printf("x = '%d'\n", x);
// hold on to a ptr while we still know the address
ptr = &x;
}
// can't see x anymore, but is this safe?
printf("still have a ptr! '%d'\n", *ptr);
}
Спасибо!