我有一个函数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()
很慢,请发布演示这一点的代码。
上一篇:ASP.NET:检查在Page_Load中单击事件单击、事件、ASP、NET
下一篇:在Microsoft规划求解的基础VS Matlab的fmincon约束的非线性优化基础、Microsoft、VS、fmincon