簡體   English   中英

如何斷言內存已釋放

[英]How to assert that memory is freed

我有一個其中沒有可用內存的功能。

我想在調用此函數后斷言該函數已釋放給定的內存。

而且我無法更改此功能中的任何內容。

我需要單測驗。 我想測試我的功能,我想檢查我的功能在調用后是否真的釋放了內存

問題在代碼中

void func(char *mem)
{
  // Some where in the function there is a free of the memory
  // The free could be into if condition so there is a risk to not be executed
}

int main()
{
   char *mem = malloc(20);
   func(mem);
   // how to assert here that the memory is freed?
}

簡短的回答:無法實現這一目標。

確保釋放的內存不會意外重用或確定某些指針已釋放的通常方法是在釋放它后立即將其設置為NULL。 為此,在您的示例中,您需要對func()進行更改。 如果您無法對func()進行任何更改,那么就無法確定傳遞給它的指針是釋放的還是仍然有效的。

此外,如果func()將為某些調用而不是其他調用釋放內存,那么這是一個糟糕的設計。 必須有一種更好和透明的方法來管理動態分配的內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM