C程序设置堆起始地址?

Set the heap start address in C program?

有没有办法在linux中设置GCC编译的C程序的堆起始地址?在 x86_64 系统中,我的测试程序将堆地址设置为 4 字节引用地址(小于 FFFFFFFF)。我想将其设置为 8 字节引用地址以进行一些测试 (> FFFFFFFF)。 GCC 是否提供任何方法来设置堆起始地址?

您可以使用 sbrk():

间接地执行此操作
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void)
{
  sbrk(0xFFFFFFFF);
  printf("%p\n", malloc(1));
  return 0;
}

这通过 "allocating" 0xFFFFFFFF 字节在最开始起作用,因此接下来 malloc() 可以分配的是更高的地址。