2011-03-25 6 views
0

다른 버퍼로 복사 된 버퍼를 가져 오려고하지만 실제 값을 가져올 수 없습니다. 여기문제점 : 버퍼 데이터 얻기

내 프로그램 흐름 방법입니다 5. INT 양식

로 변환 1. 4. 컨테이너에서 첫 번째 요소를 검색 2. 3. 스토어 그들 STL 컨테이너에 문자로 변환 임의의 정수를 생성 여기

내 헤더 파일입니다

struct BufferData 
    { 
     char *m_BufferData; 
     int m_Size; 
    }; 

private: 
typedef std::vector<BufferData *>BufferVector; 
    BufferVector m_RecvBuffer1, m_RecvBuffer2, m_RecvBuffer3; 
    typedef std::vector<BufferData *>::iterator BufferVectorIterator; 
    BufferVectorIterator IterBuffer1, IterBuffer2, IterBuffer3; 

그리고 여기 내 CPP 파일입니다

은 고려에만 단계 # 4 # 5. 당신이 (¼4 될 내 BufferSource1을 볼 수 이제

m_RecvBuffer1 [1](0x0034feb8 {m_BufferData=0x0034bc28 "45" m_Size=4 }) 
BufferSource1 0x0034bca8 "(¼4" char * 

:

void CUdpSocket::GetEachBuffer(char *BufferSource1, char *BufferSource2, char *BufferSource3) 
{ 
    if(!m_RecvBuffer1.empty()) 
    { 
     IterBuffer1 = m_RecvBuffer1.begin(); 
     memcpy(BufferSource1, *IterBuffer1, BUFFER_SIZE); 
     m_RecvBuffer1.erase(IterBuffer1); 
    } 
    else 
     memcpy(BufferSource1, 0, BUFFER_SIZE); 

    if(!m_RecvBuffer2.empty()) 
    { 
     IterBuffer2 = m_RecvBuffer2.begin(); 
     memcpy(BufferSource2, *IterBuffer2, BUFFER_SIZE); 
     m_RecvBuffer2.erase(IterBuffer2); 
    } 
    else 
     memcpy(BufferSource2, 0, BUFFER_SIZE); 

    if(!m_RecvBuffer3.empty()) 
    { 
     IterBuffer3 = m_RecvBuffer3.begin(); 
     memcpy(BufferSource3, *IterBuffer3, BUFFER_SIZE); 
     m_RecvBuffer3.erase(IterBuffer3); 
    } 
    else 
     memcpy(BufferSource3, 0, BUFFER_SIZE); 
} 

여기 내 출력됩니다. 대신 char 양식에 45가 표시되어야합니다. 이 문제를 어떻게 해결할 수 있습니까? 도와주세요.

감사합니다.

답변

4

변경이이에

memcpy(BufferSource1, *IterBuffer1, BUFFER_SIZE); 

:

memcpy(BufferSource1, (*IterBuffer1)->m_BufferData, (*IterBuffer1)->m_Size); 

m_RecvBuffer1의 유형 std::vector<BufferData*>하지 std::vector<char*> 때문입니다.

다른 사용자와 마찬가지로 변경됩니다.