为什么尖头地址不断变化?在内存中发生了什么导致这种情况发生,或者我的printf
声明出了什么问题?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char blocks[3] = {'A', 'B', 'C'};
char *ptr = &blocks[0];
char temp;
temp = blocks[0];
printf(" %c, %d ", temp, &temp);
return 0;
}
输出
A, 1764940775
A, 1731746791
答案 0 :(得分:2)
看起来您的堆栈指针是随机的。我怀疑这是因为地址空间布局随机化在大多数较新的操作系统中用作安全机制。
答案 1 :(得分:0)
您应该使用%p
转换说明符来printf指针值。但是没有理由期望它每次都是相同的价值。但是,全局变量或静态变量应位于一致的位置。