因此,我正在研究一個內存相當有限且沒有MMU的小型ARM嵌入式系統。我有幾個對象需要爲不同的函數動態分配,而這些函數都是從同一個超類繼承的,但是執行不同的函數並且可能有不同的大小。我沒有足夠的內存可用於在啓動時將它們全部實例化,並將它們留在原地。找出幾個放置對象的最大尺寸
因此,作爲一個例子,我有可能的對象定義有點像:
class Waveform1 : public OutputStream
class Waveform2 : public OutputStream
class Waveform3 : public OutputStream
和子類都將有不同的尺寸因爲有些人可能有更少的方法和比別人私有變量,但可能沒有人會比任何其他人都大得多。
我希望做的是分配緩衝區與放置在系統啓動時新是大到足以容納最大的定義的對象來使用。然後,我應該可以實例化並銷燬那些沒有問題的對象,因爲它總是足夠大以容納所需的最大對象。我希望這會被自動處理,因爲隨着系統設計的進展,新的對象可能被添加到列表中。
有沒有做到這一點,所以可能有點看起來像我知道我在做什麼規範呢?
'std :: max({sizeof(Waveform1),sizeof(Waveform2),sizeof(Waveform3)})'? – Jarod42
@ Jarod42 Err ...我忘了提及,STL可能不可用。 :( – Bitrex
'max'應該足夠簡單,重新實現 – Jarod42