void f1(char *explanation)
{
char p1;
p1 = malloc(100);
(void) sprintf(p1,
"The f1 error occurred because of '%s'.",
explanation);
local_log(p1);
}
您看到問題了嗎?除非 local_log() 對 free() 釋放的內存具有不尋常的響應能力,否則每次對 f1 的調用都會泄漏 100 字節。在記憶棒增量分發數兆字節內存時,一次泄漏是微不足道的,但是連續操作數小時后,即使如此小的泄漏也會削弱應用程序。
在實際的 C 和 C++ 編程中,這不足以影響您對 malloc() 或 new 的使用,本部分開頭的句子提到了“資源”不是僅指“內存”,因為還有類似以下內容的示例(請參見清單 2)。FILE 句柄可能與內存塊不同,但是必須對它們給予同等關注:
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/