2013-08-30 5 views
0

하게 I 후속 코드를 가지고 :OBJECT_IDENTIFIER_set_arcs는 응용 프로그램 충돌

LicMessage message; 
int oid[] = { 1, 3, 6, 1, 4, 1, 9363, 1, 5, 0 }; 
int ret1 = OBJECT_IDENTIFIER_set_arcs(&message.getMsg()->lic_ModuleID, oid, sizeof(oid[0]), sizeof(oid)/sizeof(oid[0])); 

LicMessage 클래스 :

LIC_Msg_t이 OBJECT_IDENTIFIER_t lic_ModuleID은이 asn1c에 의해 생성되는
LicMessage::LicMessage() : licMsg(new LIC_Msg_t) 
{ 
} 
LIC_Msg_t* const LicMessage::getMsg() const 
{ 
    return licMsg.get(); 
} 
std::auto_ptr<LIC_Msg_t> licMsg; 

; 필드로.

그것은 glibc는이 빌드/테스트 // 테스트를 감지 어떤 이유로 * 실패 : 무료() : 잘못된 포인터를 : 0x0000003ccab8e018 * *

당신은 내가 잘못 걸 조언을 주시겠습니까?

답변

0

메모리를 요청하면 포인터가 손실됩니다. 메모리는 malloc 으로 할당해야합니다.

+0

LicMessage :: LicMessage() : licMsg ((LIC_Msg_t *) malloc (sizeof (LIC_Msg_t)))를 의미합니까? 도움이되지 않습니다 – w00drow

+0

VALGRING을 사용하여 코드를 디버깅 해보십시오. 유용 할 수 있습니다. http://valgrind.org/ – goGud