在没有 malloc 的情况下创建内存缓冲区

标签 c

我在嵌入式系统 (ARM Cortex M3) 上工作,我无法访问任何类型的“标准库”。特别是,我无权访问 malloc

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

uint8_t buffer[64] = {0};
doStuff((uint8_t *) &buffer));

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

最佳答案

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

除此之外,在您的示例中,您在 &buffer 之后关闭了太多括号。


如果 buffer 的大小可变,你也应该将大小传递给 doStuff,如果它的大小不变,我也会传递大小以防万一有一天你会改变尺寸。

话虽如此,您应该按照以下方式进行操作:

uint8_t buffer[64] = {0};
int     len        = 64;
doStuff(buffer, len);

关于在没有 malloc 的情况下创建内存缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10224555/

相关文章:

c - 我很难使用引用传递

c++ - 实现日志观察器

c - 注入(inject)的 dll 使所有者进程崩溃。为什么?

c - posix fork() & win32 CreateProcess() 之后的子进程名称是什么?

只调用一个函数并让其他函数访问它的返回值?

c - PC Lint 警告 537 : Repeated include file

c - 用C写入文件

c - 带函数的 while 语句

c - 使用 va_args 而不传递 num(如 printf)

c - 从 C 中的列表中删除