2017-10-21 112 views
-4

我想知道的性能差異的B/W性能差B在C + +/w的堆中分配對象和堆棧分配的對象

sample *s = new sample(); 

sample s; 

其中樣品是類。

+0

答案是,這取決於編譯器,平臺,編譯器設置,班級的大​​小,你的堆,並在* *差異百分比來看,在類的構造函數。這通常不值得擔心。如果是,你必須測試它。 – zzxyz

+3

如果這兩行中的任何一行都是程序中的性能瓶頸,則說明您有問題。你的例子中也沒有包含一個靜態的,就像C++關鍵字一樣。 –

+0

@RetiredNinja我剛開始學習C++,所以很抱歉,如果問題沒有意義,。順便說一句,我說的是哪裏的記憶是在編譯時和堆棧內存位置分配靜態內存分配,而在動態內存分配的內存在運行時,並在堆內存位置分配那麼有沒有任何性能兩者的區別? –

回答

0

不同的是,動態分配比其他的存儲持續時間慢。多少:這取決於。這種差異可能是完全不相關的(例如,當代碼未被使用並且編譯器恰巧足夠聰明以優化)或者非常重要的動態分配使得不可能保證硬死線。

與動態分配一個更大的問題,比潛在的性能差異,是,除非你遵守非常嚴格的規範,這是非常困難的,證明你的程序沒有內存泄漏,或者說,它有明確定義的行爲。