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