函数返回后释放动态分配的结构数组。

时间:2013-07-12 14:49:17

标签: c++ c pointers malloc

我有一个解析文件的函数,并将它的数据放入一个动态分配的结构数组中。该函数返回此动态分配的用户定义数据类型的数组。 我想释放解析函数中使用的这个数组,我该怎么做?这是我用来分配数组的代码。

DownloadDescription_t* pDownloads = (DownloadDescription_t*) malloc(MDLFDescription -> uiNumberOfLocations *sizeof(DownloadDescription_t));

DownloadDescription_t结构的定义如下:

typedef struct 
{
  UINT uiIndex;
  UINT uiDateAdded;
  char caFileName[129];
  char caUserName[50];
  char caSubsystem[10];
} DownloadDescription_t;

谢谢大家!

2 个答案:

答案 0 :(得分:1)

只需使用:

free(pDownloads);

释放数组对象。

对于每次malloc来电,您应该只有一次free来电。

答案 1 :(得分:0)

所以,我们猜测,你有一个函数包含你发布的代码,比如

DownloadDescription_t * yourFunctionName( ... )

然后你在main中调用它,因为你将指针返回到main,你需要一个值来存储它,就像:

DownloadDescription_t * newName = yourFunctionName( ... );

然后你使用指针和数据做你需要的一切。

毕竟,现在你确定只需使用内存:free (newname);

好了,现在你可以做其他的事情并结束你main