Windows 7에서 실행중인 C ++ 코드가 있지만 windows10에서는 작동하지 않습니다. MAC / LINUX에서 작동합니다. 큰 16 진수 파일을 구문 분석하려고합니다. 내 코드는 배열에로드 된 다음 비즈니스 논리를 적용하여 csv를 생성합니다. 파일 크기는 2.38GB입니다. 아래는 코드입니다.
bool readFile (string filename, char ** buffer ,unsigned int & sizeOfFile )
{
ifstream inFile (filename.c_str (), ios::in | ios::binary);
if (!inFile)
return false;
inFile.seekg (0, ios::end);
size_t size = inFile.tellg ();
inFile.seekg (0, ios::beg);
*buffer = new char[size];
cout<<"\n Length of the ARRAY= "<<size;
inFile.read (*buffer, size);
inFile.close ();
sizeOfFile = size;
cout<<"File successfully read Press Any Key to Continue.. "<<endl;
//getch();
return true;
}
Visual Studio 2015 및 dev C ++에서 Windows 10에서 파일을 실행할 때 파일을 배열로로드하지 못합니다. Windows 7에서 완벽하게 작동합니다.
size_t size = inFile.tellg ();
...
*buffer = new char[size];
전체 파일을 읽을 수있는 충분한 공간을 만들지 않은 것 같습니다. 파일 크기가 10 바이트 인 경우 널로 끝나는 문자열 끝에 추가 문자가 필요하므로 11 바이트를 할당해야합니다. '\0'
종료 할 캐릭터 를 저장합니다 . 일부 시스템에서는 작동하지만 다른 시스템에서는 작동하지 않는다는 사실은 해당 시스템에서 문자열을 올바르게 종료하기 위해 메모리의 올바른 지점에 NUL 문자가 있음을 의미하므로 순전히 운이 좋습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다