문제

push_back 호출이 나를 위해 실패하는 코드가 있습니다. MDB는 나에게 다음과 같은 단서를줍니다.

:: dem malloc + 0x49 ~ malloc + 0x49 ~== malloc + 0x49 ~ :: DEM __1ciallocate4cpngrnc_jo__6fipta_3_ + 0x2a ~ __1ciallocate4cpngrnc_jo__6fipta_3_ + 0x2a ~== __type_0 * 할당 :: DEM __1cjallocator4cpngrnc_jo__iallocate6mi_p1_ + 0x20 ~ __1cjallocator4cpngrnc_jo__iallocate6mi_p1_ + 0x20 ~== rnc_jo ** 할당 자 :: 할당 :: DEM __1cgVector4cpngrnc_jo__kinsert_aux6mp1rk1_v_ + 0xac. __1cgVector4cpngrnc_jo__kinsert_aux6mp1rk1_v_ + 0xac== void 벡터 :: insert_aux. :: dem __1cgvector4cpngrnc_jo__jpush_back6mrk1_v_ + 0x4e. __1cgvector4cpngrnc_jo__jpush_back6mrk1_v_ + 0x4e== void 벡터 :: push_back. :: DEM __1ciallocate4cpngrnc_jo__6fipta_3_ + 0x2a. __1ciallocate4cpngrnc_jo__6fipta_3_ + 0x2a== __type_0 * 할당 :: dem __1cgvector4cpngrnc_jo__jpush_back6mrk1_v_ + 0x4e. __1cgVector4cpngrnc_jo__jpush_back6mrk1_v_ + 0x4e== void 벡터 :: push_back`

어떻게 이것을 수정할 수 있습니까? 실제로 벡터 크기보다 큰 할당 된 공간이 있음을 알고있는 것. 해당 공간을 사용하는 경우 모든 데이터를 두 번째 위치로 재 할당하고 복사합니다.

벡터 macx_size가 매우 큰 값이며 많은 값을 삽입하지 않는 것처럼이 코드가 실패해서는 안됩니다. 내가 무슨 소리를 내는지 알려주시겠습니까?

도움이 되었습니까?

해결책

확인을하는 한 가지 방법은 응용 프로그램이 사용하는 메모리와 함께 시스템의 자유 메모리를 모니터링하는 것입니다.

  • 응용 프로그램의 메모리 사용이 계속 증가하면 메모리 누수가있을 것입니다.
  • 응용 프로그램 요구 사항보다 더 적은 메모리가 적 으면 자원 문제가 있습니다.

다른 팁

이것은 메모리 문제가있는 것으로 보인다. 나는 푸시 _ 백이 불려지기 전에 목록이 비정상적이라는 것을 의심한다. 내 제안은이 목록에서 작업을 단계별로 줄이는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top