4
假設我有一個叫vector
類維護由std::allocator<T>.
現在分配T
型的一些內部,動態數組,我構建U
類型的vector
,後來又希望使用移動語義,這樣我可以使用由它佔用的內存爲T
型vector
,像這樣:使用內存
vector<unsigned> u(512);
// Do something with v.
vector<double> t = std::move(u);
// Do something with t.
// Later, t gets destroyed.
是否安全對我來說,使用由u
的分配器在t
的移動構造函數分配的內存,然後再使用釋放它t
的分配器?如果是這樣,我需要做些什麼來確保這個操作是安全的?我猜我應該首先使用u
的分配器爲u
的內部數組的每個元素調用allocator.destroy()
。
C++ 11允許有狀態的分配器。你只需要定義一些額外的功能IIRC。 – Xeo 2012-01-12 05:22:09
@Xeo C++ 11再次救援。你能提供一個關於如何做到這一點的鏈接?我一定想知道。 – 2012-01-12 05:24:59