使用指针将数据从一个地址复制到另一个地址

时间:2017-01-29 20:28:53

标签: c pointers arm memory-address

我正在尝试使用C将半字,即16位从我的微控制器的一个存储器地址移到另一个。请看下面的简单代码:

#include <stdint.h>

int main(void){

    int16_t *src = (int16_t*)0x20000000; //source memory address
    int16_t *dst = (int16_t*)0x20000016; //destination memory address
    *dst = *src; //dereference both, set destination value to source value
    return 0;
}

当我点击*dst = *src行时,我遇到了一个Hardfault异常。我对指针和解引用/引用的理解不足可能是问题所在。我将不胜感激。

编辑: 有什么办法可以使用赋值运算符(=)?

在一行代码中编写它

1 个答案:

答案 0 :(得分:0)

你正在写0x20000016,这不是4字节边界。如果您的处理器不支持未对齐的读写操作,则会导致错误。你在用什么处理器?