📄 csdn技术中心 cuj:标准库:allocator能做什么?.mht
字号:
new()=A3=AC=B6=F8=C7=D2=CE=D2=C3=C7=D2=B2=B2=BB=BF=BC=C2=C7=A3=A8=D4=DA=BA=
=C3=B5=C4std::allocator=CA=B5=D7=F7=D6=D0=BF=C9=D2=D4=D5=D2=B5=BD=B5=C4=A3=
=A9=B8=B4=D4=D3=B5=C4=D0=D4=C4=DC=D3=C5=BB=AF=B4=EB=CA=A9=A1=A3=CE=D2=C3=C7=
=BD=AB=D5=E2=B8=F6=BC=F2=B5=A5=B5=C4allocator=BD=D0=D7=F7malloc_allocator=
=20
=A1=A3 </FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
=
</SPAN>=BC=C8=C8=BBmalloc_allocator=B5=C4=C4=DA=B4=E6=B9=DC=C0=ED=BA=DC=BC=
=F2=B5=A5=A3=AC=CE=D2=C3=C7=BE=CD=C4=DC=BD=AB=D6=D8=B5=E3=BC=AF=D6=D0=D4=DA=
=CB=F9=D3=D0STL=B5=C4allocator=CB=F9=B9=B2=D3=D0=B5=C4=D1=F9=B0=E5=C9=CF=A1=
=A3=CA=D7=CF=C8=A3=AC=D2=BB=D0=A9=C0=E0=D0=CD=A3=BAallocator=CA=C7=D2=BB=B8=
=F6=C0=E0=C4=A3=B0=E5=A3=AC=CB=FC=B5=C4=CA=B5=C0=FD=D7=A8=CE=AA=C4=B3=B8=F6=
=C0=E0=D0=CDT=B7=D6=C5=E4=C4=DA=B4=E6=A1=A3=CE=D2=C3=C7=CC=E1=B9=A9=C1=CB=
=D2=BB=D0=F2=C1=D0=B5=C4typedef=A3=AC=D2=D4=C3=E8=CA=F6=B8=C3=C8=E7=BA=CE=
=CA=B9=D3=C3=B4=CB=C0=E0=D0=CD=B5=C4=B6=D4=CF=F3=A3=BAvalue_type=D6=B8T=B1=
=BE=C9=ED=A3=AC=C6=E4=CB=FC=B5=C4=D4=F2=CA=C7=D3=D0=B8=F7=D6=D6=D0=DE=CA=CE=
=D7=D6=B5=C4=D6=B8=D5=EB=BA=CD=D2=FD=D3=C3=A1=A3</FONT></FONT></SPAN></P>=
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =
</SPAN>template=20
<class T> class =
malloc_allocator</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
</SPAN>{</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
</SPAN>public:</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>typedef T<SPAN=20
style=3D"mso-spacerun: =
yes"> &n=
bsp; =20
</SPAN>value_type;</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>typedef =
value_type*<SPAN=20
style=3D"mso-spacerun: =
yes"> =20
</SPAN>pointer;</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>typedef const =
value_type*=20
const_pointer;</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>typedef =
value_type&<SPAN=20
style=3D"mso-spacerun: =
yes"> =20
</SPAN>reference;</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>typedef const=20
value_type& const_reference;</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>typedef =
std::size_t<SPAN=20
style=3D"mso-spacerun: =
yes"> =20
</SPAN>size_type;</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>typedef =
std::ptrdiff_t<SPAN=20
style=3D"mso-spacerun: yes"> =20
</SPAN>difference_type;</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> =
</SPAN>...</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
</SPAN>};</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
=
</SPAN>=D5=E2=D0=A9=C0=E0=D0=CD=D3=EBSTL=C8=DD=C6=F7=D6=D0=B5=C4=BA=DC=CF=
=E0=CB=C6=A3=AC=D5=E2=B2=BB=CA=C7=C7=C9=BA=CF=A3=BA=C8=DD=C6=F7=C0=E0=B3=A3=
=B3=A3=D6=B1=BD=D3=B4=D3=CB=FC=B5=C4allocator=CC=E1=C8=A1=D5=E2=D0=A9=C0=E0=
=D0=CD=A1=A3</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
=
</SPAN>=CE=AA=CA=B2=C3=B4=D3=D0=D5=E2=C3=B4=B6=E0=B5=C4typedef=A3=BF=C4=E3=
=BF=C9=C4=DC=C8=CF=CE=AApointer=CA=C7=B6=E0=D3=E0=B5=C4=A3=BA=CB=FC=BE=CD=
=CA=C7value_type=20
=
*=A1=A3=BE=F8=B4=F3=B2=BF=B7=DD=CA=B1=BA=F2=D5=E2=CA=C7=B6=D4=B5=C4=A3=AC=
=B5=AB=C4=E3=BF=C9=C4=DC=D3=D0=CA=B1=BA=F2=CF=EB=B6=A8=D2=E5=B7=C7=B4=AB=CD=
=B3=B5=C4allocator=A3=AC=CB=FC=B5=C4pointer=CA=C7=D2=BB=B8=F6pointer-like=
=B5=C4class=A3=AC=BB=F2=B7=C7=B1=EA=B5=C4=B3=A7=C9=CC=CC=D8=B6=A8=C0=E0=D0=
=CDvalue_type=20
__far=20
=
*=A3=BBallocator=CA=C7=CE=AA=B7=C7=B1=EA=C0=A9=D5=B9=CC=E1=B9=A9=B5=C4=B1=
=EA=D7=BChook=A1=A3=B2=BB=D1=B0=B3=A3=B5=C4pointer=C0=E0=D0=CD=D2=B2=CA=C7=
=B4=E6=D4=DAaddress()=B3=C9=D4=B1=BA=AF=CA=FD=B5=C4=C0=ED=D3=C9=A3=AC=CB=FC=
=D4=DAmalloc_allocator=D6=D0=D6=BB=CA=C7operator=20
=
&()=B5=C4=C1=ED=CD=E2=D2=BB=D6=D6=D0=B4=B7=A8=A3=BA</FONT></FONT></SP=
AN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =
</SPAN>template=20
<class T> class =
malloc_allocator</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
</SPAN>{</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
</SPAN>public:</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>pointer =
address(reference x)=20
const { return &x; }</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>const_pointer=20
address(const_reference x) const { </FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>return =
&x;=20
</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> =
</SPAN>}</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> =
</SPAN>...</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
</SPAN>};</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
=
</SPAN>=CF=D6=D4=DA=CE=D2=C3=C7=C4=DC=BF=AA=CA=BC=D5=E6=D5=FD=B5=C4=B9=A4=
=D7=F7=A3=BAallocate()=BA=CDdeallocate()=A1=A3=CB=FC=C3=C7=BA=DC=BC=F2=B5=
=A5=A3=AC=B5=AB=B2=A2=B2=BB=CA=AE=B7=D6=CF=F3malloc()=BA=CDfree()=A1=A3=CE=
=D2=C3=C7=B4=AB=B8=F8allocate()=C1=BD=B8=F6=B2=CE=CA=FD=A3=BA=CE=D2=C3=C7=
=D5=FD=D4=DA=CE=AA=C6=E4=B7=D6=C5=C9=BF=D5=BC=E4=B5=C4=B6=D4=CF=F3=B5=C4=CA=
=FD=C4=BF(max_size=B7=B5=BB=D8=BF=C9=C4=DC=B3=C9=B9=A6=B5=C4=D7=EE=B4=F3=C7=
=EB=C7=F3=D6=B5)=A3=AC=D2=D4=BC=B0=BF=C9=D1=A1=B5=C4=D2=BB=B8=F6=B5=D8=D6=
=B7=D6=B5=A3=A8=BF=C9=D2=D4=B1=BB=D3=C3=D7=F7=D2=BB=B8=F6=CE=BB=D6=C3=CC=E1=
=CA=BE=A3=A9=A1=A3=CF=F3malloc_allocator=D5=E2=D1=F9=B5=C4=BC=F2=B5=A5=B5=
=C4allocator=C3=BB=D3=D0=C0=FB=D3=C3=C4=C7=B8=F6=CC=E1=CA=BE=A3=AC=B5=AB=CE=
=AA=B8=DF=D0=D4=C4=DC=B6=F8=C9=E8=BC=C6=B5=C4allocator=BF=C9=C4=DC=BB=E1=C0=
=FB=D3=C3=CB=FC=A1=A3=B7=B5=BB=D8=D6=B5=CA=C7=D2=BB=B8=F6=D6=B8=CF=F2=C4=DA=
=B4=E6=BF=E9=B5=C4=D6=B8=D5=EB=A3=AC=CB=FC=D7=E3=D2=D4=C8=DD=C4=C9n=B8=F6=
value_type=C0=E0=D0=CD=B5=C4=B6=D4=CF=F3=B2=A2=D3=D0=D5=FD=C8=B7=B5=C4=B6=
=D4=C6=EB=A1=A3</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
=
</SPAN>=CE=D2=C3=C7=D2=B2=B4=AB=B8=F8deallocate()=C1=BD=B8=F6=B2=CE=CA=FD=
=A3=BA=B5=B1=C8=BB=D2=BB=B8=F6=CA=C7=D6=B8=D5=EB=A3=AC=B5=AB=CD=AC=D1=F9=BB=
=B9=D3=D0=D2=BB=B8=F6=D4=AA=CB=D8=BC=C6=CA=FD=D6=B5=A1=A3=C8=DD=C6=F7=B1=D8=
=D0=EB=D7=D4=BC=BA=D5=C6=CE=D5=B4=F3=D0=A1=D0=C5=CF=A2=A3=BB=B4=AB=B8=F8a=
llocate=BA=CDdeallocate=B5=C4=B4=F3=D0=A1=B2=CE=CA=FD=B1=D8=D0=EB=C6=A5=C5=
=E4=A1=A3=CD=AC=D1=F9=A3=AC=D5=E2=B8=F6=B6=EE=CD=E2=B5=C4=B2=CE=CA=FD=CA=C7=
=CE=AA=D0=A7=C2=CA=B6=F8=B4=E6=D4=DA=B5=C4=A3=AC=B6=F8=CD=AC=D1=F9=A3=ACm=
alloc_allocator=B2=BB=CA=B9=D3=C3=CB=FC=A1=A3</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =
</SPAN>template=20
<class T> class malloc_allocator =
</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
</SPAN>{</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> =20
</SPAN>public:</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>pointer =
allocate(size_type=20
n, const_pointer =3D 0) {</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>void* =
p =3D=20
std::malloc(n * sizeof(T));</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>if=20
(!p)</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> =20
</SPAN>throw std::bad_alloc();</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> </SPAN>return =
static_cast<pointer>(p);</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
style=3D"mso-spacerun: yes"> =
</SPAN>}</FONT></FONT></SPAN></P>
<P class=3DMsoPlainText style=3D"MARGIN: 0cm 0cm 0pt"><SPAN=20
lang=3DEN-US><FONT size=3D3><FONT face=3D=CB=CE=CC=E5><SPAN=20
style=3D"mso-tab-count: 1"> </SPAN><SPAN=20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -