通过函数调用分配内存以进行缓冲 [英] Allocate memory to buffer through function call

查看:0
本文介绍了通过函数调用分配内存以进行缓冲的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个函数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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆