创建没有malloc的内存缓冲区

Ran*_*lue 2 c

我正在开发一个嵌入式系统(ARM Cortex M3),我无法访问任何类型的"标准库".特别是,我无权访问malloc.

我有一个void doStuff(uint8_t *buffer)接受指向512位缓冲区的指针的函数.我尝试过以下操作:

uint8_t buffer[64] = {0};
doStuff((uint8_t *) &buffer));
Run Code Online (Sandbox Code Playgroud)

但我没有得到预期的结果.难道我做错了什么?有没有替代方法?

eck*_*kes 5

doStuff(buffer)应该没问题,因为buffer 已经uint8_t*.

除此之外,&buffer在您的示例中,您将关闭一个括号.


如果buffer是可变大小,你也应该将大小传递给doStuff它,如果它是常量大小,我也会传递大小,以防万一你改变大小.

话虽这么说,你应该采取以下方式:

uint8_t buffer[64] = {0};
int     len        = 64;
doStuff(buffer, len);
Run Code Online (Sandbox Code Playgroud)