似乎無法找到野外現有的任何東西,這似乎很奇怪。std兼容stringstream使用堆棧分配存儲?
因此,在我推出自己的產品之前,有沒有人知道在堆棧上分配存儲空間的std兼容stringstream?
我想有2種方法來實現這一目標:
最初使用一個靜態大小的緩衝區棧上(可能是模板參數允許編譯時定製)
- 當空間用完恢復使用動態存儲
- 當空間耗盡使用
alloca
增加棧存儲
這將異體w短於預定大小的字符串快速輸入到字符串流中。
對於初始大小的合適選擇將意味着可以實現諸如日誌記錄之類的操作,而無需從堆中頻繁調整大小。
你不能使用'_alloca',因爲它不會影響調用者的堆棧(即使用stringstream的函數)。 – 2011-12-23 20:37:27
我有一個日誌對象,它當前使用一個內部的stringstream對象來存儲記錄的字符串。在構建字符串時多次調用'operator <<'可能導致多個堆分配。如果我可以使用一個使用堆棧分配存儲來存儲當前日誌行的stringstream類,這將更有效率。 – 2011-12-23 20:43:13