2012-01-25 52 views
3

我遇到了這個(短)代碼,我不確定它到底是什麼;不常見的使用malloc

int amount = 5 
int totalAllocatedMemory = 0; 
totalAllocatedMemory += amount, malloc(amount); 

看來'malloc'在這裏沒有效果!

謝謝

+8

確保它具有的效果的最低優先級 - 它創建了一個內存泄漏。 –

+1

不是一個真正的問題,不具有建設性,太局部......如何決定? – tenfour

+0

「totalAllocatedMemory」與「totalAllocatedMemroy」的名稱不同,因此它可能不會按照您的想法進行操作。此外,您在第一行後缺少分號。無論如何,它確實會泄漏內存。 –

回答

3

它確實有效果,因爲它分配內存。但是,代碼看起來很奇怪,內存也會泄露。

如果你想知道有關語法和精確語義,看How does the Comma Operator work

+0

除了內存永遠不會被使用,真的是一段奇怪的代碼 – Anycorn

3

它:

  • 分配5輪輪空
  • 增加到totalAllocatedMemroy(錯字?)
  • 泄漏內存
+0

nitpick:逗號運算符的優先級低於+ =,因此它將5添加到'totalAllocatedMemory'而不是地址。 –

+1

@BrankoDimitrijevic:同意。我甚至不會認爲這是一個挑剔。 –

2

那麼代碼看起來馬車但這裏是它的作用:

  • 添加量totalAllocatedMemory
  • 分配5個字節,並丟棄結果(這將是分配的內存地址,從而爲其他人說結果到內存泄漏)

這是因爲逗號具有所有運營商在C.