QVector的push_back导致程序崩溃,什么原因?

weixin_38062262 2019-09-19 05:57:59
在我的代码中有一个:复制代码QVector <Router> RouterList其中的Router是自定义的一个类,但是当我的代码中走到    Router Router2Add;    ……    RouterList.push_back(Router2Add); //添加。的时候,程序就崩溃了,调试的时候跟踪到了qvector.h的第521行,代码是这样的:template <typename T>void QVector<T>::append(const T &t){    if (d->ref != 1 || d->size + 1 > d->alloc) {        const T copy(t);        realloc(d->size, QVectorData::grow(sizeOfTypedData(), d->size + 1, sizeof(T),                                           QTypeInfo<T>::isStatic));        if (QTypeInfo<T>::isComplex)            new (d->array + d->size) T(copy);        else            d->array[d->size] = copy;    } else {        if (QTypeInfo<T>::isComplex)            new (d->array + d->size) T(t);        else            d->array[d->size] = t;    }    ++d->size;}其中的    if (d->ref != 1 || d->size + 1 > d->alloc) {这就是第521行。调试器显示,copy()函数的参数t跟我传进去的Router2Add是一样的,但是copy的结果却不一样。请问这是什么原因呢?还想问一下,copy是不是相当于Router的拷贝构造函数?我用的是QT4.5。
...全文
643 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复

435

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧