20.6.9:C++默認分配器 - 如果大小不等於傳遞給調用allocate的大小,會發生什麼?
void deallocate(pointer p, size_type n);
- 要求:P應爲()從分配獲得的指針值。 n應該等於作爲第一個參數傳遞給調用返回p的allocate的值。
- 影響:取消分配由p引用的存儲。
- 備註:使用:: operator delete(void *)(18.6.1),但在調用此函數時未指定。
如果n
不等於作爲第一agrgument分配的調用返回其通過p
值應發生什麼情況?不要釋放?投擲std::bad_alloc
? ...
編輯: 我的意思是「應該發生的事情」是:是否可以在自定義實現中拋出或斷言?
Btw .: Microsoft實現忽略傳遞的大小... – 0xbadf00d
@FrEEzE - 該實現可以忽略該參數,因爲它知道它具有**是什麼。其他實現可能會使用它,如果它們本身不記得分配大小的話。 –
忽略大小是一種有效的未定義行爲。 –