Q&A

  • 동적배열 , 동적 메모리

현재 제가 맡은 프로그램에 동적 배열을 써서 파일을 버퍼로 읽어 들이는 로직을 구현 했습니다.


그런데 생각해보니 동적 배열로 쓰면 길이 제한이 있는게 아닌가? 라는 생각이 들고 New 프로시저를 통해서 구현을 해야하는지 


궁금해졌습니다. SetLength로 지정한 크기 이상의 파일을 읽어들이면 버퍼로 읽어올때 프로그램이 out of Memory로 죽는 현상이 생겨서요.

  


 



2  COMMENTS
  • Profile
    ULP 2015.05.05 23:07
    var
      F : TFileStream;
      buf : Array of Char;
    begin
      F := TFileStream.Create('파일 명',fmOpenRead);
      try
        SetLength(Buf,F.Size);
        F.Read(Buf[0],F.Size);
        ShowMessage(string(Buf));
      finally
        F.Free;
      end;
    end;

    요런식으로 하는 방법도 괜찮을 까요 ? 

    여지껏 -.- SetLength를 초기화하듯 앞에다가 몰아서 넣었는데 생각해보니 이런식으로 길이를 융통성있게 설정해서 쓰라고 만들어 놓은 것 같네요.


  • Profile
    이정욱 2015.05.06 08:52

    아.. 몰아서 넣으셨다는 뜻이 여러개의 동적배열의 크기를 미리 메모리를 확보해 놓으셔서 그러셨던것 같습니다. 위처럼 사용하시면 필요시에 할당하고 해제되므로 문제되지 않을 듯 합니다.

  • profile ULP
    2015/05/05 22:49
  • Views109
    Likes0
    Comments2
    Reports0
  • Tag List
  • 목록으로