使用 memcpy(...) 读取物理地址处的值

sve*_*ven 0 c memcpy

我需要读取 0x2428(MCU 的闪存)地址中的值。如何使用 memcpy 读取值?

 uint8_t *newData ,x;
 memcpy( newData, 0x2428, sizeof x);
Run Code Online (Sandbox Code Playgroud)

但是,我得到

错误[P​​e167]:“int”类型的参数与“void const *”类型的参数不兼容

我应该如何修复错误?

J. *_*ray 5

您试图将内存地址 (0x2428) 作为 memcpy 操作的目标地址传递,但编译器在期望 const void * 时仅将其视为 const int 值(整数文字)。您至少必须将其转换为 (const void *) 0x2428 的数据类型,才能让此语法起作用。

  • 只要您有内存映射并且一切都在应有的位置,这种做法就完全不会出错。完全没有风险。风险来自于猜测或试验硬编码地址。 (4认同)