我需要创建一个非常大的数组。让我们假设 50 兆字节。
我可以安全地将它创建为普通静态数组吗?编译器会把它放在堆栈上(可能导致堆栈溢出),还是会足够聪明地把它放在堆上?
如果没有办法这样做,有没有一种简单的方法可以在程序启动时使用 malloc 或“new”,但在程序结束时自动释放它?
最佳答案
据我了解,静态变量并不存在于堆栈中。如果他们这样做了,当你弹出他们所在的栈帧时他们会去哪里?静态函数变量需要在调用之间保持它们的状态,因此从逻辑上讲,静态数据应该保存在堆上。
此外,当程序结束时,一切 都会自动释放。
关于c++ - 在堆上创建静态数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4857087/