我有一些代码如下:
typedef struct _X
{
int array[1000];
}X;
static X x;
int main()
{
x.array[0] =100;
}
我的问题是,在main()中,当引用x时,它是否在堆栈上消耗了4 * 1000个字节?如果线程有限的堆栈大小可以粉碎堆栈吗?
答案 0 :(得分:3)
x不占用堆栈中的内存。它具有静态存储持续时间(和内部链接),并在静态存储器中分配。
本声明
x.array[0] =100;
不处理堆栈内存。
答案 1 :(得分:3)
您的x
是一个静态数组,因此存储在数据段中,占用内存4000英寸。没有使用堆栈。
答案 2 :(得分:3)
由于您已将x
声明为静态,因此不会在堆栈上分配内存。它将存储在未初始化的数据段。
了解更多信息:Memory management in C