모든 관련 비트가 한 묶음으로 합쳐지기 때문에 너무 많은 소스 코드를 제공하지 않고이 질문을하려고합니다. 관련 개체의 핵심은 (내가 생각하세요?)이다boost :: function에서 "corrupted double-linked list"를 참조하십시오.
using namespace o2scl;
typedef MSMTModel<TASensor,PosModel,target2d,ovector,ovector_const_subvector> TA_MSMTModel;
typedef MPC_funct_mfptr<MSMT_InitialState,TA_MSMTModel,MSMTFormation> MPC_TAFormation_mfptr;
typedef boost::function<int (size_t, const ovector_base&, double&, TA_MSMTModel&)> TA_mfunct;
TA_mfunct mf1 = boost::bind(&MPC_TAFormation_mfptr::mfn, f1, _1, _2, _3, _4);
부스트 :: 기능 MF1가 최소화 루틴 (o2scl::ool_mmin_spg)에 대한 콜백 함수로 사용하지만 난 데 문제가 특정 생각하지 않습니다 그. 코드는 mf1을 콜백으로 사용하고 오류없이 실행되는 것으로 보이는 ool_mmin_spg.mmin() 함수를 호출하여 실행됩니다. 손상된 이중 연결리스트 : 0x0000000001e9fb20 ***
백 트레이스 및 메모리 맵 다음에 그 때 나는
* glibc에 감지이 아름다운 메시지 * ./test를 얻을. 역 추적의 해당 줄 부스트에서
# 7 0x000000000041d32a :: 자세히 :: 기능 :: functor_manager 될 것으로 보인다 o2scl :: ovector_const_subvector_tlate>, MSMTFormation>, 부호 o2scl :: const를 & ovector_base_tlate, 긴, & 두 번 dmect :: MSMTModel이 o2scl :: ovector_const_subvector_tlate> &> :: _ 바이 :: list5을 강화, o2scl :: ovector_const_subvector_tlate>, MSMTFormation가>> :: 향상 arg를 < 1>, 부스트 : arg를 < 2> boost :: arg < 3>, boost :: arg < 4 :>> :: manage (in_buffer =, out_buffer = 경고 : 내부 오류 : psymtab에서 읽은 pc 0x41d270, symtab에서는 읽지 않음)
나는 boost :: function에서 메모리를 확보하는 데 문제가 있다는 것을 추론하지만, 잃어버린 것 이외에는 추측합니다. glibc "손상된 이중 연결 목록"오류를 디버그하려고 할 때 어떤 지침이 있습니까? Google에서 몇 가지 참조를 찾았지만 모두 매우 구체적인 문제를 해결하는 것처럼 보였습니다. 더 자세한 코드 스 니펫이 필요하며 시간 내 주셔서 감사합니다.
댓글을 주셔서 감사합니다. 문제를 해결했는데 o2scl에는 문제가되지 않았지만 부스트 기능이 필요하기 전에 범위를 벗어나는 것을 참조하는 개체가있었습니다. – HazyBlueDot