【发布时间】:2012-07-29 22:39:06
【问题描述】:
我正在尝试在函数中使用 malloc 返回一个数组:
char* queueBulkDequeue(queueADT queue, unsigned int size)
{
unsigned int i;
char* pElements=(char*)malloc(size * sizeof(char));
for (i=0; i<size; i++)
{
*(pElements+i) = queueDequeue(queue);
}
return pElements;
}
问题是我需要释放它,因为我的 MCU 的堆大小是有限的。但是我想返回它,所以我不能在函数中释放它,对吧?我可以在函数之外释放分配的内存(我调用函数的地方)吗?有没有这方面的最佳实践?提前谢谢!
【问题讨论】:
-
您必须在函数之外释放它。无论如何,不需要在函数内部释放 malloc 的内存。
-
当然。这是
malloc的全部内容。如果您不能这样做,就没有理由创建malloc。