c - 使用c数组时堆栈溢出
问题描述
当我定义
void tfooo(){
int arr[SOME_LARGE_NUMBER];
// some code here
}
我遇到堆栈溢出,但是当我添加静态关键字时
void tfooo(){
static int arr[SOME_LARGE_NUMBER];
// some code here
}
一切安好。
有什么不同?与动态数组相反,静态数组不是总是在堆栈上定义的吗?
解决方案
通常情况下,声明为自动的对象分配在堆栈上(相对较小),而声明的对象static
分配在其他地方。
请注意,这取决于您的机器和编译器。
推荐阅读
- postgresql - 使用 Postgres 从文本中提取关键字
- java - 显示日期/时间剩余当前时间
- java - 我在 android 11 上实现文件选择器,当我执行 uri.getPath() 来获取路径时,我以“/document/msf:1334”的形式获取它
- java - 通过套接字将图像发送到浏览器页面
- android - 如何解决这个问题:你还没有接受 Flutter 的许可协议?
- elixir - 有没有办法让 GenServer 状态持久化?
- reactjs - ESLint 在 React 的新语法中返回语法错误
- ruby-on-rails - 为什么我的 Ruby 函数网页只抓取第一页而不抓取分页页面?
- docker - 将 F# 4.5 安装到 Docker 容器
- javascript - 如何定位正在窃取 DOM 焦点的函数?