gpt4 book ai didi

c - C 中未初始化数据的位置

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:54 25 4
gpt4 key购买 nike

我想知道未初始化的数据修改后存放在哪里?

例如,

所有在代码中初始化为某个值的变量都将存储在.data 部分。

所有未初始化的变量,将被编译器初始化为0并存储在.bss段中。

现在,假设我在代码中定义了一个包含 10 个整数的数组。但是我没有指定这个数组的元素。因此,编译器会将数组的所有整数初始化为 0,并在 .bss 部分保留 40 个字节。

之后,我向数组写入一些数据,它会修改.bss 段本身的数据吗?

#include <stdio.h>
#include <math.h>

int main(int argc, char **argv)
{
int i;

/* 10 integers are initialized to 0 and stored in the .bss section */

unsigned int numbers[10];

/* write data to array */

for(i=0;i<10;i++)
{
numbers[i]=pow(2,i);
}

最佳答案

.bss 包含globalstatic 未初始化的变量。在您的示例中,数组将放置在堆栈上。

关于c - C 中未初始化数据的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17850890/

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