xgw*_*ang 3 c++ linux memory memory-management
我的环境是gcc,C++,Linux.当我的应用程序进行一些数据计算时,它可能需要一个"大"(可能是几MB)的内存数来存储数据,计算结果和其他东西.我使用了一些新的代码,删除来完成这个.由于在某些功能范围之外没有所有权,我认为所有这些内存都可以在堆栈中分配.
问题是,默认堆栈大小(我的系统中为8192Kb)可能不够.我可能需要更改这些堆栈分配的堆栈大小.更重要的是,如果将来计算需要更多数据,我可能需要再次扩展堆栈大小.
那么扩展堆栈大小是一种选择吗?由于无法为特定功能分配,它将如何影响整个应用程序?是不是真的到堆栈,而不是在堆中分配数据有所改善吗?
你提出了一个没有直接答案的有争议的问题.每一方都有利弊.特别是:
堆上的内存更容易控制:您可以检查返回值或允许抛出异常.当堆栈溢出时,您的线程将被卸载,并且调试器不会显示任何有意义的更改.
相反,堆栈分配会自动发生,您无需执行任何特定操作.我总是喜欢这种简单.
在堆栈上分配大量数据没有任何根本错误.在一天结束时,任何类型的内存最终都是一个内存.这意味着所需内存的总量才是真正重要的.分配这种内存的地方不太重要.当有足够的内存供您的应用程序工作时,分配内存没有区别.例如,它可以是静态的.
不同的系统具有不同的分配规则.这意味着最终决定可能取决于实际系统.
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |