下面的代码示例中的两个奇怪的外观没有意义。
foo
为什么和之间的距离argv[0]
总是不同?- 为什么不对齐到4?虽然预期结果是 4 的倍数,但并不
我想知道看起来奇怪的详细原因。
我知道这与ASLR无关
[root@localhost ~]# cat /etc/fedora-release
Fedora release 14 (Laughlin)
[root@localhost ~]# cat poc.c
#include <stdio.h>
int main(int argc, char *argv[]){
int foo;
printf("%d\n", (int)argv[0] - (int)&foo);
}
[root@localhost ~]# ./poc
5345
[root@localhost ~]# ./poc
8465
[root@localhost ~]# ./poc
4641
[root@localhost ~]# ./poc
1201
[root@localhost ~]# ./poc
2881
[root@localhost ~]# ./poc
7073
[root@localhost ~]# ./poc
5905
[root@localhost ~]# ./poc
2225
[root@localhost ~]# ./poc
2465
[root@localhost ~]# ./poc
6017
[root@localhost ~]# ./poc
8657
[root@localhost ~]# ./poc
8401
[root@localhost ~]# ./poc
5073
[root@localhost ~]# ./poc
5505
[root@localhost ~]# ./poc
1761
[root@localhost ~]# ./poc
8609
[root@localhost ~]# ./poc
3665
[root@localhost ~]# ./poc
3633
[root@localhost ~]# ./poc
6257
[root@localhost ~]# ./poc
3441
[root@localhost ~]# ./poc
4961
[root@localhost ~]# ./poc
5233
[root@localhost ~]# ./poc
561
[root@localhost ~]# ./poc
3441
[root@localhost ~]# ./poc
2097
[root@localhost ~]# ./poc
1729
[root@localhost ~]# ./poc
1841
[root@localhost ~]# ./poc
2241
[root@localhost ~]# ./poc
2145
[root@localhost ~]# ./poc
6593
[root@localhost ~]# ./poc
5681
[root@localhost ~]# ./poc
737
[root@localhost ~]# ./poc
8353
[root@localhost ~]# ./poc
1937
[root@localhost ~]# ./poc
3937
[root@localhost ~]# ./poc
4769
[root@localhost ~]# ./poc
3441
[root@localhost ~]# ./poc
6097
[root@localhost ~]# ./poc
6673
[root@localhost ~]# ./poc
1857
[root@localhost ~]# ./poc
5617
[root@localhost ~]# ./poc
5473
[root@localhost ~]# ./poc
7313
[root@localhost ~]# ./poc
3921
[root@localhost ~]# ./poc
2369
[root@localhost ~]# ./poc
4609
[root@localhost ~]# ./poc
5569
[root@localhost ~]# ./poc
6209
[root@localhost ~]# ./poc
3457
[root@localhost ~]# ./poc
3665
[root@localhost ~]# ./poc
3297
[root@localhost ~]# ./poc
4465
[root@localhost ~]# ./poc
5281
[root@localhost ~]# ./poc
6017
[root@localhost ~]# ./poc
2705
[root@localhost ~]# ./poc
1601
[root@localhost ~]# ./poc
7457
[root@localhost ~]# ./poc
4145
[root@localhost ~]# ./poc
2353
[root@localhost ~]# ./poc
5537
[root@localhost ~]# ./poc
7873
[root@localhost ~]# ./poc
6449
[root@localhost ~]# ./poc
3297