簡體   English   中英

寫入時出現段錯誤,但讀取時沒有

[英]Getting a seg fault when writing, but not when reading

我從指針列表初始化一個指針。 我可以毫無問題地從此指針讀取數據(第 2 行),但是當我嘗試寫入任何數據(第 3 行)時,它崩潰了。

當我在第 3 行放置斷點時,調試器顯示指針基於其變量指向正確的對象。

DimensionItem *DI = DimItems[j];
qDebug() << "DI xposition: " << DI->pos().x();
DI->setPos(1,1);

如果我在第 3 行斷點,我的應用程序輸出是:

::Debug::{(../Zedspex/Widgets/automeasurewidget.cpp:434)}:: DI xposition:  5.15645e-312

我可以在調試器中看到 DI 中的數據: 段錯誤前調試器中的 DI

一個彈出窗口說發生了段錯誤。 這是來自 dubugger 的唯一消息:

signal 11 (Segmentation fault), address is 0x2c from 0x4340cec4
[bt]: (1) /usr/lib/libQt5Widgets.so.5(_ZN13QGraphicsItem6setPosERK7QPointF+0x8c) [0x4340cec4]

即使在您釋放內存之后,它的內容可能仍然存在,因此從無效指針中讀取可能看起來有效。 另一方面,如果您寫入該位置,您可能會遇到異常。

信號 11(分段錯誤),地址是來自 0x4340cec4 的 0x2c

0x2c的地址非常低,表明指針為null

您提供的極少證據表明該指針實際上無效。 它可能在某個時候被釋放(通常在 C++ 中使用delete )或被錯誤地址覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM