v.push_back("11111111");
v.push_back("11111111");
v.push_back("11111111");
v.push_back("11111111");
print_vector(v);
当插入四个数据时,此时vector内数据个数等于容量,打印结果没有出现异常
当再次插入一个数据,要进行扩容时,此时出现异常
出现这种现象的原因是扩容时采用了memcpy进行扩容
由于memcpy进行的是按字节进行拷贝,而vector底层实现是指针,使用memcpy时将内容的地址进行了拷贝,而内容本身没有拷贝,即自定义类型本身内容进行了浅拷贝,当要释放旧的空间时,将本要复制的空间内容释放.
如何改进?
复制内容即可