【发布时间】:2021-12-26 20:18:23
【问题描述】:
当我尝试将 calloc 返回的指针与 BY2PAGE 对齐时,这会导致段错误。有没有办法(甚至合法)修改指针,使其在分配后对齐?
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define BY2PG 0x1000
char * vm;
static int roundup(u_int n, int align) {
if(n % align == 0) ;
// is already aligned so
// no action required, else
// align it:
else n += (align - (n % align));
return n;
}
int main() {
vm = (char *) calloc(0x100000, sizeof(char));
vm = (char *) roundup((u_int)vm, BY2PG);
vm[0] = 5; // seg fault
}
【问题讨论】: