Zeiger auf lokale Variable außerhalb des Deklarationsbereichs
Angenommen, ich habe eine Struktur, die ein PDF-Dokument darstelltpdf
und eine Struktur, die eine ihrer Seiten darstelltpdf_page
:
typedef struct pdf_page {
int page_no;
pdf_page *next_page;
char *content;
} pdf_page;
typedef struct {
pdf_page *first_page, *last_page;
} pdf;
Von meinemmain()
, Ich rufecreate_pdf_file(pdf *doc)
:
void main() {
pdf doc;
create_pdf_file(&doc);
// reading the linked list of pages here
}
Annehmen, dasscreate_pdf_file
ist etwas in diese Richtung:
void
create_pdf_file(pdf *doc) {
for (int i = 0; i < 10; i++) {
pdf_page p;
p.page_no = i;
p.contents = "Hello, World!";
doc->last_page->next_page = p;
}
}
(Dies ist nur ein Beispielquellcode, daher wird keine Listenverarbeitung angezeigtfirst_page
undlast_page
Mitglieder vonpdf
müssen erst eingestellt werden.)
Meine Frage: Wenn ich zugreifedoc->first_page
- sowie die anderen Seiten in der verknüpften Liste - nach demcreate_pdf_file()
Rufen Sie in meinemmain()
ist es möglich, dass ich Segmentierungsfehler erhalte, weil ich die lokale Variable nehmep
aus dem Zusammenhang geraten "?
(Ich bin nicht sicher, ob ich garantiert habe, dass der entsprechende Speicherort nicht für etwas anderes verwendet wird.)
Wenn ja, wie vermeide ich das?
Vielen Dank.