PREV INDEX NEXT

Author: Stan Eisenstat
Subject: Re: [Cs223] example.c getline and free
Date: Friday, 20 Mar 2020, 19:49:47


    > Message Posted By: Unknown
    >
    > could you explain what is going on in example.c with regard to getline()
    > and free(line)?

getline() reads a line and stores it in a block of
malloc()-ed storage.  When the address of the block is
added to or pushed on a Deque, that storage cannot be
freed until it has been printed.  But when getline()
reports the end of the input, the block must be freed
or it will be lost.
=====

    > line is set to NULL initially, before getline() is called for each line in
    > stdin. each time getline() is called, is new memory allocated? what is
    > line during each call? why is only one free() required?

Setting line = NULL forces getline() to malloc() a new
block of storage when reading the next line.  As above,
that block can only be freed on an EOF.
=====
    > then, at the next chunk, why can line be used again so many times?

line is a char* and can be assigned a value as often as
desired.

--Stan-
PREV INDEX NEXT