2011-03-15 4 views
2

내 버퍼에 http 요청 내용이 있습니다. 그런 다음 마지막 크기와 동일한 크기의 다른 버퍼를 정의합니다. 그리고 버퍼의 내용을 새 버퍼에 복사해야합니다. 그래서 내가 필요로하는 도움이 어떻게 다른 버퍼에 하나의 버퍼를 복사 할 수 있습니다.버퍼 내용을 다른 버퍼에 복사하십시오.

나는 memcpy을 시도했지만 작동하지 않습니다.

void TrivialMediaPlayer::DeliverMediaData(
     int       streamId, 
     bool      bHasPriority, 
     ConstBufferSptr    pMediaData) 

내가 원하는 것은 pMediaData의 내용을 새 버퍼로 복사하는 것입니다.

BufferSptr buf1 (new Buffer (pMediaData->Size())); 

은 내가 buf1pMediaData을 복사 할.

감사

+1

방어 적이기 당신이 원하는 같은 소리를 - 당신은 당신의 코드 조각을 게시 할 수 있습니다. – Rob

+1

@fami : 버퍼 유형을 모른 채로 대답하는 것은 불가능합니다. 관련 코드 (버퍼의 정의, 복사 할 코드)를 알려주십시오. –

+1

1. 코드를 표시하십시오. 2. 이전 질문에서 답을 수락하십시오. – fancyPants

답변

4

하나의 StringSptr에서 다른 문자열을 복사하기 위해 작성하는 정확한 코드가 무엇인지 모르겠습니다. 하지만

memcpy((void*)buf1 , (void*)pMediaData , pMediaData.Size()); 

을 싶다면 당신은 당신이 BufferSptr 클래스에서 "무효 *"기능을 정의한다 있는지 확인해야 겠다는 C 포인터로 BufferSptr 개체를 변환하는 (당신에 의해 작성된 클래스처럼 보인다)하는 내부 버퍼의 주소를 가리킨다.
또는 일부를 명시 적으로 호출 사용

memcpy(buf1.data() , pMediaData.data() , pMediaData.Size()); 
+0

감사합니다. 예 버퍼 클래스가 작성되었습니다 ... 원래 게시물에 추가합니다. – fammi

0

질문

가 확실하여 버퍼가 별개의 객체 있습니까 C.

에 대해 아닌가요?

C memcpy에서 개체가 겹칠 때 "작동하지 않습니다". 대신 memmove을 시도하십시오 .... 이지만 memcpy에서 작업 했어야합니다. 정말 그렇지 않다면 코드의 다른 줄에서 뭔가 잘못하고있는 것입니다.

코드을 보여줍니다.

관련 문제