首页 > 编程知识 正文

vector pushback 崩溃,vector push_back时,报内存错误

时间:2023-05-06 17:21:09 阅读:273073 作者:3979

for () { char s[5]; cin.get(s, 5); test.push_back(s); }

以上执行后发现test输出的全都是最后一次pushback进去的值。

原因猜测:

因为我对c/c++学习的不多,所以看法可能不准确。
由于s没有用new分配空间,所以整个for循环的过程中,s始终表示内存的同一块空间,每一次pushback进去的都是同一块内存空间的地址,所以每次循环都只是在用新值覆盖旧值。正确的写法应该是:

for () { char *s=new char[5]; cin.get(s, 5); test.push_back(s); }

存储n个值必然需要n个相应的内存空间,而第一段程序从始至终只用了一块内存空间,所以会出现错误

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。