【发布时间】:2014-09-07 17:21:01
【问题描述】:
例如:
void a()
{
int bla;
bla = 1;
}
对比
void b()
{
std::unique_ptr<int> bla( new int );
*bla = 1;
}
什么时候认为其中一种是好的做法?不是什么时候?或者它只是在旁观者的眼中?仅在处理大型项目或处理较大值时才有意义?
当然堆稍微慢一点。
【问题讨论】:
-
考虑到 Windows 上的堆栈大小默认为 1 MB,如果您打算使用更多,则绝对应该使用堆而不是更改默认值
-
@KugBuBu:不。这是一个询问何时适合使用自动存储(例如堆栈)和分配存储(例如堆)的问题。
-
您永远不应该使用第二个代码 sn-p。如果要使用堆分配,请使用
std::unique_ptr<T>或std::unique_ptr<T[]>或std::vector<T>。 -
@KugBuBu:你不能使用重复建议工具两次,但你可以留下另一个评论更好的重复。
-
@deW1 无论如何我发现了一些可能对你有帮助的东西:stackoverflow.com/questions/7973138/…
标签: c++ memory-management heap-memory stack-memory