如果我没记错的话,ASLR会让C编译器中的局部变量在每次程序运行时都有不同的地址。但是当我在Turbo C++和Dev-CPP IDE中尝试时,局部变量却返回了类似的地址。以下是我尝试过的代码:
之前,我认为局部变量的地址相同,因为它们都分配在同一堆栈区域和相同的内存地址中。但是当我在Stack Overflow上看到一篇关于ASLR的帖子时,我开始怀疑这可能是由于编译器的原因。有人可以解释一下吗?
编辑:我正在使用Windows 7。
#include <stdio.h>
#include <conio.h>
int main()
{
int x = 10;
int *ptr = &x;
printf("%d", ptr);
getch();
return 0;
}
之前,我认为局部变量的地址相同,因为它们都分配在同一堆栈区域和相同的内存地址中。但是当我在Stack Overflow上看到一篇关于ASLR的帖子时,我开始怀疑这可能是由于编译器的原因。有人可以解释一下吗?
编辑:我正在使用Windows 7。
printf(“%p”,(void *)ptr);
- The Paramagnetic Croissant%d
打印指针是未定义行为。 - The Paramagnetic Croissant