小编let*_*utx的帖子

为什么 argc 和 argv 的地址相差 12 个字节?

我在我的计算机(运行 Linux 的 64 位 Intel)上运行了以下程序。

#include <stdio.h>

void test(int argc, char **argv) {
    printf("[test] Argc Pointer: %p\n", &argc);
    printf("[test] Argv Pointer: %p\n", &argv);
}

int main(int argc, char **argv) {
    printf("Argc Pointer: %p\n", &argc);
    printf("Argv Pointer: %p\n", &argv);
    printf("Size of &argc: %lu\n", sizeof (&argc));
    printf("Size of &argv: %lu\n", sizeof (&argv));
    test(argc, argv);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序的输出是

$ gcc size.c -o size
$ ./size
Argc Pointer: 0x7fffd7000e4c
Argv Pointer: 0x7fffd7000e40
Size of &argc: 8
Size of &argv: 8
[test] Argc …
Run Code Online (Sandbox Code Playgroud)

c memory-alignment

40
推荐指数
2
解决办法
2581
查看次数

标签 统计

c ×1

memory-alignment ×1