|
빌더 환경에서 프로그램 돌리세요.
그러면 에러 뜨면서 IDE화면으로 넘어오죠?
거기서 Ctrl + ALT + S 누르면 현재 스택 내용이 보입니다.
지금까지 어느 함수가 실행되어왔고
어느부분에서 잘못된 메모리를 쓰려고 했는지 나올겁니다.
또 한가지는 CodeGuard옵션을 켜 놓고 프로그램 돌리면 됩니다.
그러면 아마 메모리 잘못 건드리는부분을 정확히 찝어 줄것 같은데요. ^^
아래 소스는 별 이상 없어보입니다. 다른 부분과 연관되서 죽는것 같군요.
만해 님이 쓰신 글 :
: 현정환 님이 쓰신 글 :
: : 이제 프로그램을 배우는 사람입니다..
: :
: : void __fastcall TForm1::PCFileListChange(TObject *Sender, TListItem *Item,
: : TItemChange Change)
: : {
: : TFileStream *pfile;
: :
: : if (PCFileList->Selected) {
: : AnsiString TheFileName, TheFilePath, FullFileName;
: : int FileLen;
: : TheFilePath = PCDirList->Directory;
: : TheFileName = PCFileList->Selected->Caption;
: : if (3 == TheFilePath.Length()){
: : FullFileName = TheFilePath + TheFileName;
: : }
: : else {
: : FullFileName = TheFilePath + "\\" + TheFileName;
: : }
: :
: : pfile = new TFileStream(FullFileName, fmOpenRead);
: : FileLen = pfile->Seek(0,soFromEnd);
: : delete pfile;
: :
: : mmFileInfo->Lines->Text = "Path : " + PCDirList->Directory;
: : mmFileInfo->Lines->Add("Name : " + PCFileList->Selected->Caption);
: : mmFileInfo->Lines->Add("Size : " + IntToStr(FileLen));
: :
: :
: : }
: :
: : }
: :
: : 프로그램을 이런식으로 짜 놓았는데 TFileStream 때문에 에러가 나는거 같거든요,.,
: : 멀쩡히 잘 돌아가고 나서 프로그램을 닫으면
: :
: : "0x77f83941"에 있는 명령이 "0x00000010"의 메모리를 참조했습니다.
: : 메모리는 "written" 될 수 없었습니다.
: :
: : 이런 오류 메세지가 뜹니다..
: : 고수님들의 많은 애정과 관심 부탁 드립니다...
: : 고맙습니다..
: :
: :
: 안녕하세요 만해 입니다.
:
: 요즘 시험 땜시
:
: 잘은 안 하지만 그래도 좀 공부를 해야 하길래 하고 있어서요 조금 바쁘네요~
:
: 제가 보기엔 다른건 별문제가 없는것 같은데
:
: pFile->Seek(0,soFromBeginning);
:
: 이게 약간 걸리네요
:
: 그리고 FileSize라는 변수가 파일의 크기를 나타내고자 하는 거라면
:
: pFile->Size 라는 프로퍼티를 가져 오시면 됩니다.
:
: 2기가 바이트 이상을 위해 Int64 형의 변수로 되어 있습니다.
:
: 참고만 하세요 그럼 이만~
:
|