파일 로더에서 작업 중이었고 fread 및 fseek를 계속 사용하는 대신 다음 업데이트를 사용하는 것이 더 좋다고 결정한 경우 BYTE 버퍼에 구멍 파일을 읽습니다. 내가 구조체에이 BYTE 버퍼의 일부를 할당하는 쉬운 방법이 없는지 궁금 해서요.구조체에 BYTE 버퍼의 특정 부분 복사 +
나는 이미 구조체와 같은 크기의 임시 버퍼를 만들려고했는데 원래의 버퍼에서 필요로하는 모든 BYTE를 복사하고 memcpy를 사용했지만 제대로 작동하지 않았다. 방금받은 바이트 수가 많다. 임의의 숫자 (나는 그들의 포인터를 받고 있다고 생각하지만, 나는 모른다.)
감사합니다.
편집 : 먼저 당신에게 나쁜 성능을 제공합니다 바이트하여 파일 바이트를 읽고
void memread(BYTE from[],int pos, void * to,size_t size)
{
BYTE * temp = new BYTE[sizeof(BYTE)*size];
for (unsigned int i = 0; i< 1+size; i++)
temp[i] = from[i+pos];
memcpy(to,temp,size);
}
... inside the file loader ...
fseek(fl,0,SEEK_END);
const int memory_size = (int)ftell(fl);
BYTE * memory = new BYTE[sizeof(BYTE)*memory_size];
fseek(fl,0,SEEK_SET);
for (int i=1;i<=memory_size;i++)
fread(&memory[i],sizeof(BYTE),1,fl);
fclose(fl);
int memory_pos = 0;
XM::Memory xm;
memset(&xm,0,sizeof(XM::Memory));
memread(memory,1,&xm.Header,sizeof(XM::Header));
처럼 할당 배열 어디에 코드가
delete[]
에 잊지 마십시오 간단한memcpy
로 대체 될 수있다? –
** 편집 ** 오류를 발견했습니다. 오류가 memread 함수에 있었지만 이제는 수정했습니다. 죄송합니다. 누군가가 관심 있으면 코드를 수정했습니다! – user1509548
BTW : 이것을 읽으려고하는 유명한 Fast Tracker XM 형식입니까? –