在main中使用malloc但访问外部main

时间:2015-04-03 11:00:40

标签: c arrays scope malloc

有没有办法定义一个"缓冲区"在" main"中使用动态内存功能,但在外面使用" main"在另一个功能 即 我有一个数组我分配内存到"缓冲区" by" malloc" in" main"如下

int main()
{
uint32_t *buffer = malloc( array_size * sizeof *buffer);


} 

但我必须在main

之外初始化值
void fun(uint32_t data)
{
buffer[0] = data;
...

}

事实上,在我的情况下,数据来自运行时的相机

我也尝试使用" malloc"在全球范围内但它没有起作用

4 个答案:

答案 0 :(得分:2)

一种简单而天真的方式:

uint32_t *buffer;

void fun(uint32_t data)
{
    buffer[0] = data;
    ...

}

int main()
{
    buffer = malloc( array_size * sizeof *buffer);
} 

答案 1 :(得分:0)

将该变量作为参数传递给函数。

像这样,

void fun(uint32_t data,uint32_t* buffer){ 
 // do your work
}

包含头文件stdlib.h。像这样声明该函数的原型。

void fun(uint32_t,uint32_t*);

答案 2 :(得分:0)

您可以定义全局uint32_t点,例如uint32_t *buffer1,然后让buffer1=buffer在main中,并在其他函数中使用buffer1

答案 3 :(得分:-1)

创建fun函数所属的类。让该类使用类方法填充缓冲区。然后在main中创建该类的实例。让该实例完成工作,然后删除它。