在C程序中设置堆起始地址?

时间:2015-01-23 06:04:33

标签: c gcc elf heap-memory

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

1 个答案:

答案 0 :(得分:4)

您可以使用sbrk()

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

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

这适用于&#34;分配&#34;一开始就是0xFFFFFFFF字节,因此malloc()可以分配的下一个字符是更高的地址。