找出有趣的bug:當我通過const QString&
參數,然後const char*
指針指向存儲在const QString&
內的數據時,指針指向壞數據(一些字符看起來不像I發送到功能)。爲什麼常量QString&參數返回不良const char *指向數據
LogbookNote LBHasher::makePropsFromPseudoElement(const QString& id)
{
LogbookNote rv;
if (m_ctx->currentTrim) {
const char* charId = id.toLatin1().data();
...
qDebug() << charId;
}
,並調用代碼:
LogbookNote LBHasher::makePropsByNameConvention(QString id)
{
LogbookNote g;
if (id.startsWith("_ctx_")) {
g = makePropsFromPseudoElement(id);
...
}
正如你所提到,調用方法ID來作爲QString
,即整個QString
對象的副本。因此const QString&
可以是一個強大的(不是破碎的,以刪除的臨時對象爲例)的引用。
爲什麼會發生這種行爲?
btw ...'''qDebug()<< qPrintable(id)''' –
也許這個問題的標題有待更正? – AlexanderVX