【发布时间】:2016-07-26 11:26:54
【问题描述】:
我英语不好,我会尽力把问题说清楚。
假设我有一个结构是:
struct A {
/* the first half */
int a;
int b;
/* the second half */
int c;
int d;
} ;
我们知道 A 的成员会连续存储在内存中。但是,我想让 A 的前半部分和后半部分存储在两个不同的内存页中,这意味着该结构在内存中进行了分区。我怎样才能实现它?
假设 struct A 是 linux 内核中的一个结构,所以我在内核空间中编程。内核版本是3.10。
【问题讨论】:
-
出于所有合理的目的,你不能在 C 中这样做。
-
align 宏或 __attribute__((align()) 怎么样?这有用吗?@DavidHoelzer
-
你为什么要这样做??
-
出于某些安全目的。@MichaelWalz
-
将其填充至 2 倍页面大小并与页面大小对齐。
标签: c gcc memory-management struct linux-kernel