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如果我想在无论如何之后释放该功能内部的这个空间,我将如何做到这一点(在代码中......)谢谢。
4

2 回答 2

1

指针temp本身是函数内部的自动变量;当函数退出时它会消失。

temp然而,指针指向的内存不会被自动释放。

您必须知道getFFT()函数是否希望调用者释放内存。这可以通过任何一种方式实现,并且从您显示的 API 中并不清楚。

于 2013-02-21T11:53:02.057 回答
0
  1. 是的,您需要明确释放 temp 指向的内存,否则您将发生内存泄漏。
  2. 您必须将 temp 的声明移出循环以成为 abel 以在循环外释放它指向的内存。
于 2013-02-21T11:53:22.847 回答