有没有办法在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;
}
这是通过在最开始“分配”0xFFFFFFFF 字节来实现的,因此接下来 malloc()
可以分配的是更高的地址。
关于c - C程序设置堆起始地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28103943/