170 похожих чатов

Здравствуйте, есть вопрос: можно ли иначе проверить на валидность указатель?

вроде бы обычная проверка в итоге пропускает ошибку.
Объект 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++ Символы загружены.

9 ответов

16 просмотров

Не удаляй proxy пока не закончишь с ним работу

Dmitry-Shulga Автор вопроса
Kirill Bolshakov
Не удаляй proxy пока не закончишь с ним работу

он не удаляется совершенно точно, деструктор сработает только при завершении программы. Может тут со стеком проблема или еще в чем-то?

Проверить указатель на валидность невозможно. Есть только одно значение указателя, гарантированно невалидное — nullptr

А чё у тебя все переменные — STRING ?

Ilya Zviagin
Проверить указатель на валидность невозможно. Есть...

Напомни, пожалуйста, то что nullptr - это гарантированно невалидное состояние - сказано где-то в стандарте? (Не сарказм. Просто по моей логике 0 - вполне валидный адрес, если мы живём в "реальном режиме" на голом железе)

🐈
Напомни, пожалуйста, то что nullptr - это гарантир...

По стандарту nullptr – одно из возможных, отдельное значение указателя. Невалидное тоже стоит особняком

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта