静态变量在 C 和 C 编程中发挥着至关重要的作用,使数据能够在整个生命周期中持续存在。程序。但是这些变量到底存储在可执行文件中的哪里以确保不会发生名称冲突?
考虑以下代码片段:
// foo.c static int foo = 1; void fooTest() { static int bar = 2; foo++; bar++; } // bar.c static int foo = 10; void barTest() { static int bar = 20; foo++; bar++; }
当使用 main 函数编译和链接这些文件时,重复调用 fooTest() 和 barTest(),printf 语句独立递增。这表明 foo 和 bar 变量对于它们各自的翻译单元来说是本地的。
可执行文件中静态变量的分配取决于它们的初始化。
静态变量的具体存储位置可能会根据所使用的工具链而有所不同。对于此讨论,我们假设我们使用的是 GNU 编译器集合 (GCC)。
C 和 C 中的静态变量存储在可执行文件的 .BSS 或 .DATA 段中文件,具体取决于它们的初始化。这确保每个静态变量都有唯一的内存位置并防止名称冲突。
以上是C 和 C 可执行文件中静态变量存储在哪里?的详细内容。更多信息请关注PHP中文网其他相关文章!