相关疑难解决方法(0)

哪个更快:堆栈分配或堆分配

这个问题可能听起来相当简单,但这是我与另一位与我合作的开发人员的辩论.

我正在小心处理堆栈分配的东西,而不是堆分配它们.他正在跟我说话,看着我的肩膀并评论说这没有必要,因为他们的表现是明智的.

我一直认为堆栈的增长是恒定的时间,并且堆分配的性能取决于堆的当前复杂性(用于找到合适大小的孔)和解除分配(折叠孔以减少碎片,如如果我没有弄错的话,许多标准库实现在删除期间需要时间来完成此操作.

这让我觉得可能非常依赖于编译器.特别是对于这个项目,我使用Metrowerks编译器来实现PPC架构.对这种组合的洞察力将是最有帮助的,但总的来说,对于GCC和MSVC++,情况如何?堆分配不如堆栈分配高吗?没有区别吗?或者差异是如此微小,它变得毫无意义的微优化.

c++ memory heap performance stack

489
推荐指数
13
解决办法
12万
查看次数

C++中的堆栈,静态和堆

我已经搜索过了,但我对这三个概念并不是很了解.我何时必须使用动态分配(在堆中)以及它的真正优势是什么?静态和堆栈有什么问题?我可以编写整个应用程序而无需在堆中分配变量吗?

我听说其他语言包含了"垃圾收集器",所以你不必担心内存.垃圾收集器做什么?

您可以自己操作内存,而不能使用此垃圾收集器吗?

有人告诉我这个声明:

int * asafe=new int;
Run Code Online (Sandbox Code Playgroud)

我有一个"指针指针".这是什么意思?它不同于:

asafe=new int;
Run Code Online (Sandbox Code Playgroud)

c++ heap stack static garbage-collection

157
推荐指数
4
解决办法
14万
查看次数

为什么使用'new'导致内存泄漏?

我首先学习了C#,现在我开始使用C++.据我所知,newC++中的operator 与C#中的operator 不相似.

你能解释一下这个示例代码中内存泄漏的原因吗?

class A { ... };
struct B { ... };

A *object1 = new A();
B object2 = *(new B());
Run Code Online (Sandbox Code Playgroud)

c++ pointers memory-leaks c++-faq new-operator

130
推荐指数
9
解决办法
2万
查看次数