悬赏园豆:10
[已解决问题]
解决于 2008-08-06 07:28
<P><FONT face=Verdana>程序如下:</FONT></P>
<P><FONT face=Verdana>#include <iostream><BR>#include <vector><BR>using namespace std;</FONT></P>
<P><FONT face=Verdana>class A<BR>{<BR>public:<BR> A()<BR> {</FONT></P>
<P><FONT face=Verdana> cout<<"A is fucking"<<endl;<BR> }<BR> A(const A& a)<BR> {<BR> cout<<"A is copying"<<endl;<BR> }<BR> ~A()<BR> {</FONT></P>
<P><FONT face=Verdana> cout<<"delete A"<<endl;<BR> }<BR>private:<BR> //char *ptr;<BR>};</FONT></P>
<P><FONT face=Verdana>int main()<BR>{<BR> vector<A> oo;<BR> A o;<BR> oo.push_back(o); //构造三次,析构三次<BR> oo.push_back(o); // 构造六次,析构六次<BR> return 0;<BR>}</FONT></P>
<P>第一次调用oo.push_back(o); 调用了一次operator new,申请了4字节的空间,构造了三次然后析构了三次,当然有一次是A的构造和析构</P>
<P>第二次调用oo.push_back(o); 又调用了一次operator new,申请了8字节的空间,构造了六次然后析构了六次。</P>
<P>如果再次调用oo.push_back(o); 构造10次会</P>
<P>不明白vector内部怎么实现的内存控制,或者说怎么分配的空间。</P>
<P>疑问中......</P>