вроде бы обычная проверка в итоге пропускает ошибку.
                  
                  
                  Объект proxy в том потоке, судя по отладчику, валиден, его удаления не производится ни до, ни после - почему же тогда proxy->type может крашить? Спасибо.
                  
                  
                  Есть структура:
                  
                  
                  struct proxyItem{
                  
                  
                      proxyItem();
                  
                  
                      proxyItem(QString, QString, QString, QString, QString);
                  
                  
                      proxyItem(const proxyItem&);
                  
                  
                      QString ip, port, type, user, pass;
                  
                  
                  
                  
                  
                      bool operator==(const proxyItem&)const;
                  
                  
                  };
                  
                  
                  
                  
                  
                  Есть функция, которая редко, но крашит, видимо на этапе proxy->type+":"
                  
                  
                  QString NetworkModel::proxyToString(proxyItem *proxy, bool flag) const
                  
                  
                  {
                  
                  
                      QString result;
                  
                  
                      if(proxy){
                  
                  
                          result = (flag)?"":proxy->type+":";    
                  
                  
                          result += proxy->ip + ":" + proxy->port + ":" + proxy->user + ":" + proxy->pass;
                  
                  
                      }
                  
                  
                      return result;
                  
                  
                  }
                  
                  
                  
                  
                  
                  Конкретно последняя точка была в QString t(s1):
                  
                  
                  inline QT_ASCII_CAST_WARN const QString operator+(const QString &s1, const char *s2)
                  
                  
                  { QString t(s1); t += QString::fromUtf8(s2); return t; }
                  
                  
                  
                  
                  
                  Кусок стека:
                  
                  
                     Qt5Core.dll!QString::QString(const QString & other)Строка 525  C++  Символы загружены.
                  
                  
                  >  app.exe!operator+(const QString & s1, const char * s2=0x00d21964)Строка 1534  C++  Символы загружены.
                  
                  
                     app.exe!NetworkModel::proxyToString(proxyItem * proxy=0x05f989d8)Строка 456  C++  Символы загружены.
                  
                  
                     app.exe!NetworkModel::data(const QModelIndex & index={...}, int role=0)Строка 38  C++  Символы загружены.
                  
                  
                
Не удаляй proxy пока не закончишь с ним работу
он не удаляется совершенно точно, деструктор сработает только при завершении программы. Может тут со стеком проблема или еще в чем-то?
Проверить указатель на валидность невозможно. Есть только одно значение указателя, гарантированно невалидное — nullptr
А чё у тебя все переменные — STRING ?
what's wrong?
Напомни, пожалуйста, то что nullptr - это гарантированно невалидное состояние - сказано где-то в стандарте? (Не сарказм. Просто по моей логике 0 - вполне валидный адрес, если мы живём в "реальном режиме" на голом железе)
По стандарту nullptr – одно из возможных, отдельное значение указателя. Невалидное тоже стоит особняком
Обсуждают сегодня