通过函数调用分配内存以进行缓冲函数、分配、内存

2023-09-03 09:43:16 作者:别把装B当时尚

我有一个函数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成为静态变量而发生?我希望能够做到这一点。

第 7 章 函数 C 的编程模块

注意:初始化将运行一次,该函数将被多次调用。

正如来自莫斯科的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()很慢,请发布演示这一点的代码。

 
精彩推荐
图片推荐