gpt4 book ai didi

c++ - 函数内部的局部静态变量存储在哪里 - 在数据段中还是在堆栈中?

转载 作者:行者123 更新时间:2023-12-04 16:23:52 26 4
gpt4 key购买 nike

#include <stdio.h>

void f (void)
{
static int count = 0; // static variable
int i = 0; // automatic variable
printf("%d %d\n", i++, count++);
}

int main(void)
{
for (int ndx=0; ndx<10; ++ndx)
f();
}

例如,在这段代码中,count 存储在哪里?通常,static变量会存放在Data段中,而局部变量会存放在栈中。

最佳答案

正式地,在函数内部声明为static的变量具有静态存储期限,这意味着它们的生命周期就是整个程序的生命周期。

C 标准没有说明堆栈或段,因为它们是实现细节。话虽如此,在 Linux 上初始化的 static 变量通常放在 .data 部分,而未初始化或 0 初始化的变量存储在 .bss 部分。

关于c++ - 函数内部的局部静态变量存储在哪里 - 在数据段中还是在堆栈中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69165612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com