c - 静态数组在 while 循环中初始化。在这种情况下会发生堆栈溢出吗

标签 c linux

while(true)
{
   char array[1024] = {0};
   ....
   .....

}

我只想知道在上面的代码条中是否会发生堆栈溢出,或者堆栈是否会在每个循环中展开。提前致谢。

最佳答案

具有自动存储持续时间的对象的生命周期是定义它的 block 。本例中的代码块从 while 循环的开始处开始,到结束处结束。所以理论上每次我们进入循环时都会重新分配对象。

但在实践中,编译器只会在循环之前甚至在函数开始时在堆栈上分配足够的空间,并且每次都使用它。

没有堆栈溢出的机会。

关于c - 静态数组在 while 循环中初始化。在这种情况下会发生堆栈溢出吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38218224/

相关文章:

c - mkdir() sys 中的访问模式调用 linux c

Java 脚本 (JSR223) = 用于模板化的 Bean/Script Shell?

linux - omxplayer (raspbian) 在随机播放循环中播放视频文件夹

c - 信号量和并发编程

C:指针的有效性

转换两个指针(float* 到 int*)

linux - 递归计算Linux目录中的文件

c - 这段代码的目的是什么?

c - 在 c 中传递 char** 时出现段错误

linux - SSL 的 Nginx 配置