使用指针分配地址为0x67AB
且值为0x1234
的内存位置。
我正在尝试使用指针在内存中分配固定位置而不使用malloc()
答案 0 :(得分:1)
如果您的程序在操作系统下运行,您将无法写入修复位置。为了做这样的事情,你的程序需要具有root访问权限并进行系统调用,以便操作系统自己在该位置写入。
但是,如果您正在为微控制器或嵌入式系统编写程序,那么您就是这样做的:
char* p = (char*)0x67AB;
p[0] = 0x12; // You need to write each byte at a time.
p[1] = 0x34;
答案 1 :(得分:1)
以下代码将0x1234
写入正在执行进程的地址空间中的地址0x67AB
,前提是您的C实现支持此行为(因为它超出了C标准所要求的范围)。您可能需要使用uint16_t
以外的类型,具体取决于您的确切需求。如果您不知道自己在做什么,此代码可能会失败或导致其他问题:
#include <stdint.h>
…
* (uint16_t *) 0x67AB = 0x1234;
答案 2 :(得分:1)
假设您知道写入特定地址(如果正常),如PIC或控制器:
#include <stdint.h>
int16_t *ptr = (int16_t *) 0x67AB;
*ptr = 0x1234;
由于未指定整数的字节序,因此逐字节设置可能无法提供预期的行为。