Будет ли 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);
}

Спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос