如果我没记错的话,每次运行程序时,ASLR 都会使 C 编译器中的局部变量具有不同的地址。但是当我在 Turbo C++ 和 Dev-CPP IDE 中尝试它时,它只是返回一个类似的局部变量地址。我试过的代码:
#include <stdio.h>
#include <conio.h>
int main()
{
int x = 10;
int *ptr = &x;
printf("%d", ptr);
getch();
return 0;
}
以前,我认为局部变量的地址是相同的,因为它分配在同一个堆栈区域,因此是相同的内存地址。但是当我在 stackoverflow 中找到一个关于 ASLR 的线程时,它让我做了这些。我想这是因为编译器。任何人都可以对此有所了解吗?
编辑:
我使用的是 Windows 7。