通过函数调用分配内存以进行缓冲 [英] Allocate memory to buffer through function call
本文介绍了通过函数调用分配内存以进行缓冲的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个函数f(q15_t *x, inst *z)
,它有一个输入x
和一个实例z
:
typedef struct {
q15_t * pbuff;
}inst;
inst z;
我想要一个能够分配内存空间并将其地址放到z.pbuff
的初始化器函数,就像(My Effort):
instance_initiator(inst *instance,uint16_t buffSize)
{
q15_t a[buffSize];
instance->pbuff=a;
}
我正在寻找正确的方法来做到这一点,因为我认为在启动器函数完成后,分配的缓冲区空间将消失,似乎我们需要全局变量,而这不可能通过使a
成为静态变量而发生?我希望能够做到这一点。
注意:初始化将运行一次,该函数将被多次调用。
正如来自莫斯科的Vlad告诉malloc
是好的,但如果这是缓慢的算法,我会感到害怕?也许一种方法是通过宏来设置静态数组a
的大小。
推荐答案
使用malloc()
分配。测试是否成功。
// Return error flag
bool instance_initiator(inst *instance, uint16_t buffSize) {
if (instance == NULL) {
return true;
}
instance->pbuff = malloc(sizeof instance->pbuff[0] * buffSize);
return instance->pbuff == NULL && buffSize == 0;
}
Malloc很好,但我担心这会使算法变慢吗?
不要害怕。审阅Is premature optimization really the root of all evil?。
如果您仍然觉得malloc()
很慢,请发布演示这一点的代码。
这篇关于通过函数调用分配内存以进行缓冲的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文