2009-08-17 4 views
3

포인터를 사용하여 다른 프로세스/스레드간에 데이터를 교환하는 데 사용하는 "공유 메모리"를 지정합니다. 이제 공유 버퍼의 내용을 16 진수 덤프하고 싶습니다. 누구든지 그 일을하는 방법을 알고 있습니까?16 진수 덤프 메모리 위치에서

덕분에, R

+1

일반적인 용도의 16 진수 덤프 기능을 작성하는 방법을 묻고 있습니까? –

+0

대략 말하면, 나는 그렇게 말할 것이다;). 기본적으로, 그 유형을 모른 채 특정 메모리 위치에서 내용을 출력 할 수있는 방법을 알고 싶습니다. –

답변

13

사용 기능이 같은 것을 을 보일 것입니다 물론 :-) 캐스트 :

void Dump(const void * mem, unsigned int n) { 
    const char * p = reinterpret_cast< const char *>(mem); 
    for (unsigned int i = 0; i < n; i++) { 
    std::cout << hex << int(p[i]) << " "; 
    } 
    std::cout << std::endl; 
} 

을 다음 사용 :

Foo * f = GetSharedFoo(); 
Dump(f, somesize); 

somesize 당신이 덤프하는 방법을 많이합니다.

+1

그냥 내 도구 상자를 들여다 보았습니다. Mine은 또한'std :: setw (2) << std :: setfill (os.widen ('0'))'을 스트림에 넣는다. 하지만 그 이유는 문자 폭을 사용하여 스트림에 쓰기 때문일 수 있습니다. – sbi

+0

네, 너비와 패딩을 설정하는 것은 좋은 생각입니다.하지만 전에 여러 번 여기에서 논의되었습니다. - 나는 던져진 물건의 주조에 집중하고있었습니다. –

+4

언급 할 가치가있는 또 다른 점은 후속 int-cast에서'fff' 값이'ffffffff'로 확장되지 않게하려면'const unsigned char * '로 변환해야한다는 것입니다. – Rawler