2013-02-21 70 views
0

我有我的目標c函數內部,也做這行:指向數組的空閒指針?

for(int k=0;k<numOfBuffers;k++) 
{ 

float *temp=getFFT(buffersRing[k],buffersRing[k][0]); 
......// do stuff with temp 

FFT功能還給指針512輛彩車

float* getFFT(int16_t *q, int bufferL) 

我的問題陣列:

  1. 在一次又一次定義*temp的函數裏面,是否需要稍後free所有的臨時指針,或者它們自動超出了該函數的範圍?
  2. 如果我想釋放這個空間內部功能for loop無論如何,我會怎麼做(在代碼...) 謝謝。

回答

1

指針temp本身是函數內部的一個自動變量;它將在函數退出時消失。

內存temp指針指向,但是,不會自動解除分配。

您必須知道getFFT()函數是否希望調用者釋放內存。這可以用任何方式實現,並且從您顯示的API中不明確。

0
  1. 是的,你需要釋放temp指向的內存,否則你會有內存泄漏。
  2. 您必須將temp的聲明移出循環以便將循環外部指向的內存釋放。
+0

所以現在我已經宣佈了許多指針 - 所以我不能釋放他們所有?它是否佔用了太多內存?臨時指針不會自動在函數外部釋放嗎? ,我確實把它從for循環中拿出來,然後釋放它,但是我想知道,如果我不是免費的,它會佔用多少內存。 – bilanbila 2013-02-21 12:08:09

+0

泄漏內存永遠不是一個好的選擇。即使消耗的內存看起來很少,隨着時間的推移它會建立起來,最終它會吃掉所有的RAM。 – 2013-02-21 12:10:23