2016-11-22 4 views
-1

Ich erhalte einen segfault Fehler beim Aufruf p_o-> p_order _-> somefunc(). Ich schaute in den Debugger und sah, dass die Zähler der gemeinsamen Zeiger seltsam erscheinen. Es zeigt eine neg Zählung für die gemeinsame ptr und eine große coutn für schwache ptr (die ich nie benutzt)Was bedeutet es, wenn ein intelligenter Zeiger zeigt negative uscount

p_o    @0x60c3331   Online::sptrOrder 
    data  @0x60c3331   Online::OrderMgr 
    p_order_ 0x20000000009b6b7 Online::Order * 
    id_   40     long 
    usecount -1602224128   int 
    weakcount 636599    int 
    px   1.99    double 
    is_fruit_ false    bool 
    size  10     long 

Versteh ich die hier dargebotenen Informationen oder gibt es etwas seltsam los? Auch ich bin nicht wirklich vertraut mit dem Debugger, aber .. Ist das Fehlen eines @Adresse der Linie

p_order_ 0x20000000009b6b7 Online::Order 

den Zeiger p_order_ implizieren (der ein Rohzeiger ist) ist nicht gültig/null ,. .? Oder ist das 0x20000000009b6b7 eine Art Adresse?

+2

Es bedeutet, dass Ihr Code irgendwo einen Fehler hat, der zu einem beschädigten Heap führte. –

+2

Bitte schreiben Sie ein [mcve], wenn Sie mehr von einer Antwort wollen als "irgendwas, das den Haufen zerstört hat", was ungefähr alles ist, was wir mit dieser Information sagen können. –

Antwort

-1

Die Werte segfault und anonymer Garbage-Usecount zeigen an, dass Ihr Smart-Pointer-Objekt kein gültiges Objekt ist. Haben Sie einen Verweis auf ein Smart-Pointer-Objekt, das auf dem Stack deklariert wurde und nicht mehr existiert?

Verwandte Themen