我在嵌入式系统 (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/