如果一个程序通常只使用几兆的内存,就不要费力去减少内存使用。例如,如果由于其他原因,操作超过几兆的文件不切实际,那么将整个输入文件读取到内存中进行操作是合理的。
然而,对于像 cat
或 tail
这样可以有效地操作非常大的文件的程序,避免使用会人为限制其可以处理的文件大小的技术非常重要。如果一个程序按行工作,并且可以应用于任意用户提供的输入文件,它应该只在内存中保留一行,因为这并不困难,并且用户希望能够操作比一次性放入内存更大的输入文件。
如果你的程序创建复杂的数据结构,只需在内存中创建它们,并在 malloc
返回 NULL
时给出致命错误。
诸如 valgrind
之类的内存分析工具可能很有用,但不要仅仅为了避免它们的误报而使程序复杂化。例如,如果内存一直使用到进程退出前,不要仅仅为了消除此类工具的警告而释放它。