任何程序我跑Valgrind的告訴我說,有72個可能丟失字節3塊,甚至一個簡單的程序,如:Valgrind的簡單程序
int main(void)
{
printf("Hello, World!\n");
return 0;
}
你知不知道這是否是一個Valgrind的Mac OS sierra上的錯誤?
我怎麼能泄漏這樣的程序內存?
任何程序我跑Valgrind的告訴我說,有72個可能丟失字節3塊,甚至一個簡單的程序,如:Valgrind的簡單程序
int main(void)
{
printf("Hello, World!\n");
return 0;
}
你知不知道這是否是一個Valgrind的Mac OS sierra上的錯誤?
我怎麼能泄漏這樣的程序內存?
,可以很可能發生的,如果任何預加載的庫(例如,經由LD_PRELOAD
),或連接的C運行的任何部分的有內存泄漏。
還有一些由CRT執行的內存分配,這些內存永遠不會有意釋放,但通常這些只是一次性事物,並且每個進程只發生一次。
Valgrind無法可靠地區分應用程序的哪些部分不是什麼。您只能從內存分配的位置檢查堆棧跟蹤,然後確定這是否是您的域。
而且你可以爲這些錯誤生成抑制因爲它們不屬於你的程序。事實上,* valgrind *對已知問題有很多限制。 –
請注意,分配的內存並未釋放,但引用依然存在的內存不是泄漏。在工藝終止時,只留下「一次性」的分配將被操作系統真空吸塵器清除,這並不罕見,甚至是一定不好。 –
它說'可能丟失'。可能在crt中有一些。如果它總是存在,並且不增長,不要擔心。 –