使用指针将数据从一个地址复制到另一个地址
Copying data from one address to another using pointers
我正在尝试使用 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 异常。我对指针和 dereference/reference 的低理解可能是问题所在。我会很感激一些帮助。
编辑:
有什么方法可以使用赋值运算符 (=) 在一行代码中编写此代码?
您正在写入 0x20000016
,它不在 4 字节边界上。如果您的处理器不支持未对齐的读取和写入,这将导致错误。您使用的是什么处理器?
我正在尝试使用 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 异常。我对指针和 dereference/reference 的低理解可能是问题所在。我会很感激一些帮助。
编辑: 有什么方法可以使用赋值运算符 (=) 在一行代码中编写此代码?
您正在写入 0x20000016
,它不在 4 字节边界上。如果您的处理器不支持未对齐的读取和写入,这将导致错误。您使用的是什么处理器?