(Ich glaube, diese Frage von Can a local variable's memory be accessed outside its scope? technisch verschieden ist, weil es ist C anstelle von C++.)Wird C den Speicher eines lokalen Blocks var wiederverwenden, wenn es den Gültigkeitsbereich verlässt?
Ich weiß, dass Sie in C eine lokale Variable in einem Block setzen können, und es wird zu diesem Block scoped werden:
Meine Frage ist, ist es trotzdem sicher, diesen Speicher bis zum Ende der Funktion zu verwenden? Ob es WISE aus Sicht der Design-/Coding-Praktiken ist, ist eine separate Frage, aber ist es ein undefiniertes Verhalten oder kann ich darauf zählen, dass das Gedächtnis bleibt? Zum Beispiel:
#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);
}
Vielen Dank!
Danke für den Hinweis auf den Standard! – murftown