push_back
에 대한 호출이 실패하는 코드가 있습니다. mdb는 다음과 같은 단서를 제공합니다.벡터에서 push_back이 실패하여 malloc이 추가 메모리를 할당하지 못함
:: 민주 공화국의 malloc +부터 0x49 ~ 의 malloc +부터 0x49 ~ ==의 malloc +부터 0x49 ~ :: 민주 공화국 __1cIallocate4CpnGrnc_JO__6FipTA_3_ + 0x2a ~ __1cIallocate4CpnGrnc_JO__6FipTA_3_ + 0x2a ~ == __type_0 * :: 민주 공화국을 할당 __1cJallocator4CpnGrnc_JO__Iallocate6MI_p1_ + 0x20에 ~ __1cJallocator4CpnGrnc_JO__Iallocate6MI_p1_ +가 0x20 ~ == rnc_JO ** 할당 :: == 무효 벡터를 :: 민주 공화국 __1cGvector4CpnGrnc_JO__Kinsert_aux6Mp1rk1_v_ + 0xac __1cGvector4CpnGrnc_JO__Kinsert_aux6Mp1rk1_v_ + 0xac를 할당 :: insert_aux :: 민주 공화국 __1cGvector4CpnGrnc_JO__Jpush_back6Mrk1_v_ + 0x4e __1cGvector4CpnGrnc_JO__Jpush_back6Mrk1_v_ + 0x4e == 무효 벡터 ::와 push_back :: 민주 공화국 __1cIallocate4CpnGrnc_JO__6FipTA_3_ + 0x2a __1cIallocate4CpnGrnc_JO__6FipTA_3_ + 0x2a == __type_0 * 이 :: 민주 공화국 __1cGvector4CpnGrnc_JO__Jpush_back6Mrk1_v_ + 0x4e __1cGvector4CpnGrnc_JO__Jpush_back6Mrk1_v_ + 0x4e == 무효 벡터 :: push_back`
내가 그나마 할당 이 문제를 어떻게 해결할 수 있습니까? 실제로 벡터 크기보다 큰 할당 된 공간이 있다는 것을 알고 있습니다. 해당 공간을 활용하면 모든 데이터를 다시 할당하고 두 번째 위치로 복사합니다.
벡터 macx_size
은 매우 큰 값이며, 너무 많은 값을 삽입하지 않아서 내 코드에서 오류가 발생하지 않아야합니다. 알려 주실 수 있습니까? 내가 왜 디버깅을해야합니까?
'valgrind'또는 다른 도구를 사용하여 메모리 누수 또는 중단을 확인 했습니까? –
"'macx_size'는 매우 큰 값입니다. 너무 많은 값을 삽입하지 않아서 코드에 오류가 발생하지 않아야합니다."max_size의 값은 최소값이 아니라 벡터가 가질 수있는 최대 요소 수입니다. 최소한이어야한다는 것은 그것이 그것을 확실히 지킬 수 있음을 의미합니다. 최대가된다는 것은 확실히 그것들을 유지할 수 없다는 것을 의미합니다. 그 크기에 도달하기 전에 실패 할 수 있습니다. –
코드 란 무엇입니까? – mahmood