malloc'd内存重叠由std :: make_shared创建的对象

时间:2013-04-18 01:48:40

标签: c++ c memory-management malloc fuse

malloc的调用返回指向内存块的指针,该内存块与make_shared已分配的内存重叠。我正在构建一个FUSE客户端,并且malloc调用在FUSE库中,但我不确定它是否相关。我无法在我的程序之外重现错误,我不知道接下来该做什么。在shared_ptr管理的对象中的指针被破坏然后使用之前,Valgrind没有发现任何错误。

1 个答案:

答案 0 :(得分:0)

此错误是使用shared_ptr创建new,然后将其类型转换为weak_ptr并删除它的结果。我必须对它进行类型转换,因为我正在使用C库(FUSE)并向其传递指向weak_ptr的指针,并且它提供了一个uint64_t来存储句柄。然后,库调用我的函数并向它们传递一个包含指针类型转换的结构uint64_t