我正在寫一個strcat版本,可以根據輸入字符串的大小分配內存。爲此,我使用realloc。Valgrind報告使用的內存是巨大的
我一直在做很多字符串測試。在一些連接9,193個字符串的測試中,會產生長度爲64,344的字符串。我Valgrind的檢查,但我發現結果有點令人不安......
HEAP SUMMARY
in use at exit: 0 bytes in 0 blocks
total heap usage: 9193 allocs, 9,193 frees, 338,017,768 bytes allocated
All heap blocks were freed -- no leaks are posible
For counts of detected and suppressed errors, rerun with -v
ERROR SUMMARY: 0 Errors form 0 contexts (suppresed: 0 from 0)
程序運行良好,在我看來足夠快,但我擔心與分配的消息338017768個字節,我覺得it'對於一個簡單的字符串連接而言太多了。
「分配的字節」究竟意味着什麼?
謝謝。
這意味着您平均每次調用「malloc()'等時分配了大約36 KiB。既然你知道一些分配是在64 KiB的區域,這看起來不算太壞。而且你把它全部釋放了,所以你可能沒有什麼可擔心的。正如已經指出的(通過一些答案),它並不意味着你的程序增長到300+ MiB。 –