Wskaźnik do zmiennej lokalnej poza zakresem jej deklaracji

Powiedzmy, że mam strukturę reprezentującą dokument PDFpdf i struktura reprezentująca jedną ze stronpdf_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;

Od mojegomain(), Dzwonięcreate_pdf_file(pdf *doc):

void main() {
  pdf doc;
  create_pdf_file(&doc);
  // reading the linked list of pages here
}

Zakładać, żecreate_pdf_file jest coś takiego:

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;
    }
}

(To jest tylko przykładowy kod źródłowy, więc nie jest pokazane przetwarzanie listy. Oczywiściefirst_page ilast_page członkowiepdf trzeba najpierw ustawić.)

Moje pytanie: Jeśli mam dostępdoc->first_page - jak również inne strony w połączonej liście - pocreate_pdf_file() zadzwoń do mniemain(), czy to możliwe, że otrzymuję błędy segmentacji z powodu „przyjęcia zmiennej lokalnejp poza jego kontekstem ”?

(Nie jestem pewien, czy zagwarantowałem, że odpowiednia lokalizacja pamięci nie zostanie użyta do czegoś innego.)

Jeśli tak, jak mogę tego uniknąć?

Dzięki.

questionAnswers(2)

yourAnswerToTheQuestion