2013-04-18 38 views
0

malloc的調用返回指向與make_shared已分配的內存重疊的內存塊的指針。我正在構建FUSE客戶端,malloc調用位於FUSE庫中,但我不確定這是否相關。我無法在程序外重現錯誤,我不知道下一步該怎麼做。 Valgrind直到由shared_ptr管理的對象中的指針被損壞然後使用時才發現任何錯誤。malloc'd內存重疊由std :: make_shared創建的對象

+1

你有沒有試過在'valgrind'下運行它?如果'malloc()'的內部數據結構被損壞,那麼聽起來可能是這樣。 – FatalError

+0

是的,直到指針損壞然後使用才發現錯誤。 – user1091954

+0

你確定共享指針沒有釋放其對象的所有權嗎?這將導致對象被刪除,另一個'malloc'調用可以重用該內存。 – Barmar

回答

0

此錯誤是由於創建shared_ptrnew,然後將其類型化爲weak_ptr並將其刪除。我必須對它進行註釋,因爲我使用了一個C庫(FUSE)並將它傳遞給一個指向weak_ptr的指針,並且它提供了一個uint64_t來存儲句柄。該庫然後調用我的函數並將它們作爲uint64_t傳遞給包含指針類型轉換的結構。