2012-04-26 62 views
-2

我現在用的是C語言編程的freopen功能來跟蹤記錄器文件

  1. 功能執行
  2. 警告消息
  3. 錯誤所遇到

將所有stderr消息路由到指定的文本文件。這在測試環境中運行良好。但是,在生產中,我們遇到了使用freopen()打開的日誌文件的內存不足異常,並且服務器正在崩潰。我需要你的幫助來解決這個問題。

+1

你可能是指'freopen';但我不明白你的問題。顯示更多代碼。 – 2012-04-26 09:10:51

+0

對不起,它的freopen – user987379 2012-04-26 09:12:02

回答

2

確保您的日誌記錄代碼不會泄漏資源。

我假設你正在談論的freopen()函數,分配內存來保存FILE結構,並且很可能還有額外的空間,例如,緩衝I/O。

當您完成該文件時,除非進程即將終止,否則必須在由freopen()返回的指針上調用fclose()

當然,您的代碼中可能會有任何其他資源泄漏。沒有看到代碼就很難做到這一點。

+0

在使用C/C++內存驗證器進行概要分析的應用程序中沒有內存泄漏。這只是由於大量的打印語句被記錄到文件中造成的。是否需要設置任何參數,如[MAX文件尺寸] – user987379 2012-04-26 09:28:11