2017-10-21 41 views
-4

我想知道的性能差异的B/W性能差B在C + +/w的堆中分配对象和堆栈分配的对象

sample *s = new sample(); 

sample s; 

其中样品是类。

+0

答案是,这取决于编译器,平台,编译器设置,班级的大​​小,你的堆,并在* *差异百分比来看,在类的构造函数。这通常不值得担心。如果是,你必须测试它。 – zzxyz

+3

如果这两行中的任何一行都是程序中的性能瓶颈,则说明您有问题。你的例子中也没有包含一个静态的,就像C++关键字一样。 –

+0

@RetiredNinja我刚开始学习C++,所以很抱歉,如果问题没有意义,。顺便说一句,我说的是哪里的记忆是在编译时和堆栈内存位置分配静态内存分配,而在动态内存分配的内存在运行时,并在堆内存位置分配那么有没有任何性能两者的区别? –

回答

0

不同的是,动态分配比其他的存储持续时间慢。多少:这取决于。这种差异可能是完全不相关的(例如,当代码未被使用并且编译器恰巧足够聪明以优化)或者非常重要的动态分配使得不可能保证硬死线。

与动态分配一个更大的问题,比潜在的性能差异,是,除非你遵守非常严格的规范,这是非常困难的,证明你的程序没有内存泄漏,或者说,它有明确定义的行为。