0
對malloc
的調用返回指向與make_shared
已分配的內存重疊的內存塊的指針。我正在構建FUSE客戶端,malloc調用位於FUSE庫中,但我不確定這是否相關。我無法在程序外重現錯誤,我不知道下一步該怎麼做。 Valgrind直到由shared_ptr
管理的對象中的指針被損壞然後使用時才發現任何錯誤。malloc'd內存重疊由std :: make_shared創建的對象
對malloc
的調用返回指向與make_shared
已分配的內存重疊的內存塊的指針。我正在構建FUSE客戶端,malloc調用位於FUSE庫中,但我不確定這是否相關。我無法在程序外重現錯誤,我不知道下一步該怎麼做。 Valgrind直到由shared_ptr
管理的對象中的指針被損壞然後使用時才發現任何錯誤。malloc'd內存重疊由std :: make_shared創建的對象
此錯誤是由於創建shared_ptr
與new
,然後將其類型化爲weak_ptr
並將其刪除。我必須對它進行註釋,因爲我使用了一個C庫(FUSE)並將它傳遞給一個指向weak_ptr
的指針,並且它提供了一個uint64_t
來存儲句柄。該庫然後調用我的函數並將它們作爲uint64_t
傳遞給包含指針類型轉換的結構。
你有沒有試過在'valgrind'下運行它?如果'malloc()'的內部數據結構被損壞,那麼聽起來可能是這樣。 – FatalError
是的,直到指針損壞然後使用才發現錯誤。 – user1091954
你確定共享指針沒有釋放其對象的所有權嗎?這將導致對象被刪除,另一個'malloc'調用可以重用該內存。 – Barmar