大型静态数组是否会破坏堆栈?

时间:2014-10-23 17:09:58

标签: c stack stack-overflow

我有一些代码如下:

typedef struct _X
{
  int array[1000];
}X;

static X x;

int main()
{
   x.array[0] =100;

}

我的问题是,在main()中,当引用x时,它是否在堆栈上消耗了4 * 1000个字节?如果线程有限的堆栈大小可以粉碎堆栈吗?

3 个答案:

答案 0 :(得分:3)

x不占用堆栈中的内存。它具有静态存储持续时间(和内部链接),并在静态存储器中分配。

本声明

x.array[0] =100;

不处理堆栈内存。

答案 1 :(得分:3)

您的x是一个静态数组,因此存储在数据段中,占用内存4000英寸。没有使用堆栈。

答案 2 :(得分:3)

由于您已将x声明为静态,因此不会在堆栈上分配内存。它将存储在未初始化的数据段

了解更多信息:Memory management in C