c++ - 在堆上创建静态数组?

标签 c++ arrays static heap-memory stack-memory

我需要创建一个非常大的数组。让我们假设 50 兆字节。

我可以安全地将它创建为普通静态数组吗?编译器会把它放在堆栈上(可能导致堆栈溢出),还是会足够聪明地把它放在堆上?

如果没有办法这样做,有没有一种简单的方法可以在程序启动时使用 malloc 或“new”,但在程序结束时自动释放它?

最佳答案

据我了解,静态变量并不存在于堆栈中。如果他们这样做了,当你弹出他们所在的栈帧时他们会去哪里?静态函数变量需要在调用之间保持它们的状态,因此从逻辑上讲,静态数据应该保存在堆上。

此外,当程序结束时,一切 都会自动释放。

关于c++ - 在堆上创建静态数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4857087/

相关文章:

c++ - map 中的字符串是如何存储的?

c# - C++/C#/Java中的 'Class'的想法是否来自C中的struct?

arrays - Lua/LOVE 索引问题

mysql - 数据库字段(GROUP_CONCAT)作为数组

java - 垃圾收集器是否处理 java 中的静态变量或方法?

javascript - 为 css 和 js 提供服务的 cookieless 域-组织代码的方式?

c++ - 如何使用 static const 变量初始化 static std::array ?

c++ - Lua 将表传递给函数,修改它并在 C++ 中取回它

sql - PostgreSQL 根据国家表解析数组中的国家

c# - 主窗口中的静态成员与实例成员