在手册页中:https://linux.die.net/man/3/getline
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
如果 *lineptr为NULL,则getline()将分配一个缓冲区来存储该行,该缓冲区应该由用户程序释放(在这种情况下,*n中的值被忽略)。
由于是学校的作业我不能使用MALLOC根据老师的指示,我不关心行的内容(我只想轻松跳过它)。我如何释放内存?它被分配到哪个缓冲区?
注意:由于这是一个理论性较强的问题,我没有添加任何代码
1条答案
按热度按时间jjhzyzn01#
下面是一个示例用法:
您将注意到字符串
line
是NULL
的开头,正如文档所解释的,第一次调用getline
将使它为您分配一个缓冲区(就像它在内部调用malloc
一样),随后在循环中调用getline
将重用同一个缓冲区。使用ctrl-d发送输入结束后,循环将退出,并调用
free
以释放该行。