malloc’d память перекрывает объект, созданный std :: make_shared

Вызов malloc возвращает указатель на блок памяти, который перекрывает память, уже выделенную make_shared, Я создаю клиент FUSE, и вызов malloc находится в библиотеке FUSE, но я не уверен, что это актуально. Я не смог воспроизвести ошибку вне моей программы, и я понятия не имею, что делать дальше. Valgrind не находит ошибок до тех пор, пока указатель на объект, управляемый shared_ptr поврежден, а затем используется.

0

Решение

Эта ошибка была результатом создания shared_ptr с newзатем введите его в weak_ptr и удалив его. Я должен типизировать его, потому что я использую библиотеку C (FUSE) и передаю указатель на weak_ptrи это обеспечивает uint64_t хранить ручку. Затем библиотека вызывает мои функции и передает им структуру, содержащую указатель типа в виде uint64_t,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]