3 回答

TA貢獻1788條經驗 獲得超4個贊
arr == addr
void * addr = std::malloc(N * sizeof(T));T * arr = ::new (addr) T[N]; // #1
::operator new[](???, addr)
???
N * sizeof(T)
addr
arr
addr
addr
您的示例調用 operator new[]()
,不是 operator new()
.分配函數 不構造什么都行。他(她,它)們 分配.
T * p = new T[10];
打電話給 operator new[]()
帶尺寸參數 10 * sizeof(T) + x
,對默認構造函數的十個調用 T
,有效 ::new (p + i) T()
.
operator new[]
operator delete[]
最新情況:
T * p = ::new (buf1) T;T * arr = ::new (buf10) T[10];
::operator new(std::size_t, void*)
::operator new[](std::size_t, void*)
buf10
10 * sizeof(T) + y
y
.

TA貢獻1776條經驗 獲得超12個贊
operator new[] ()
std::uninitialized_fill()
std::uninitialized_copy()
delete[] array
new
operator delete[] ()
new
- 3 回答
- 0 關注
- 355 瀏覽
添加回答
舉報