簡體   English   中英

C ++ 17,<memory>標准庫中不推薦使用的函數?

[英]C++17, deprecated functions in <memory> standard library?

我剛剛意識到動態內存管理標准庫的某些功能已在C ++ 17中棄用 一個例子是get_temporary_buffer

template< class T >
std::pair< T*, std::ptrdiff_t > get_temporary_buffer( std::ptrdiff_t count );

有人可以解釋一下原因嗎? 我可以期待在C ++ 20中有替代品嗎?

根據棄草它的提議

如果今天提出這個API將被認為是一個不完整的想法。 作為一個功能API,如果分配緩沖區的函數泄漏,它缺乏異常安全性,但我們不提供類似RAII的包裝器來促進安全使用。

有人建議,此API的所有當前實現實際上都不會比常規new運算符執行更有效的分配,並且,如果確實如此,我們應該認真考慮棄用此工具。 否則,我們應該用適當的防護/包裝類完成設計,並鼓勵供應商提供錯失的優化機會。

簡而言之,只需使用new / delete 或者你自己的臨時內存分配器; 哪個最適合您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM