-4

使用指针分配具有地址0x67AB和值的内存位置。0x1234我正在尝试使用指针而不是使用指针分配内存中的固定位置malloc()

4

3 回答 3

1

如果您的程序在操作系统下运行,您将无法写入修复位置。为了做这样的事情,您的程序需要具有 root 访问权限并进行系统调用,以便操作系统本身写入该位置。

但是,如果您正在为微控制器或嵌入式系统编写程序,您可以这样做:

char* p = (char*)0x67AB;
p[0] = 0x12; // You need to write each byte at a time.
p[1] = 0x34;
于 2013-08-02T14:01:58.800 回答
1

如果您的 C 实现支持此行为(因为它超出了 C 标准的要求),则以下代码将写入执行进程的0x1234地址空间中的地址。0x67AB您可能需要使用 以外的类型uint16_t,具体取决于您的具体需求。如果您不知道自己在做什么,则此代码可能会失败或导致其他问题:

#include <stdint.h>
…
* (uint16_t *) 0x67AB = 0x1234;
于 2013-08-02T14:19:55.493 回答
1

如果可以,假设您知道写入特定地址,例如在 PIC 或控制器中:

#include <stdint.h>
int16_t *ptr = (int16_t *) 0x67AB;
*ptr = 0x1234;

由于未指定整数的字节序,逐字节设置可能无法提供预期的行为。

于 2013-08-02T14:22:04.377 回答