꾸~~~뻑
메일은여..요쪽으로
toto98@thrunet.com
buff : string 전역변수
s : string 지역변수
nsize :integer 지역변수
mem, p : pchar
Buff := S;
nSize := length(Buff); //256
GetMem(Mem, nSize + sizeof(LongInt)); // 메모리할당
P := Mem; // 왜 여기서 p에다가 넘기는지 그냥mem으로 구현하면 안되는지..
Move(nSize, P^, sizeof(LongInt)); // 여기는 왜 이렇게 구현을 했는지..
Inc(P, sizeof(LongInt)); // 왜 여기는 메모리 번지를 증가시켜야 하는가..
Move(Buff[1], P^, nSize); // 이건 string을 pchar로 변환
저기 저 내용을 정확히 알고 싶어여..
왜 저렇게 구현을 한것인지 말이져..
이거여..쓰레드에서 돌아가는 건데여..
메모리를 계속해서 잡아 먹어여..(나쁜 넘~)
아무리 해도 전 잡아 낼수 가 없네여..
슬픈넘~
8시간 동안 별의별 방법을 해 봤지만..대처 방법을 못 구했습니다.
여기에서
마지막에..
mem := nil;
freemem(mem);
을 해도 역시 메모리는 계속증가하고 있네여..
원래는 없었슴..
제발 살려주세엽~~~
메일보내달라고 하지말고 직접 오셔서 보세요.
님에게 메일보낼 시간에 코딩한줄 더하겠습니다.
메모리를 할당받아서 포인터를 이동하면서 값을 추출하는 군요...
> P := Mem;
Mem을 직접 가지고 할때 포인터를 이리저리 옮긴후에 Mem의 원래 번지를 알 수 없게
되는 경우가 있습니다. 그래서 복사본으로 작업을 하네요. Mem을 가지고 한다면 나중에
원래의 포인터위치로 Mem값을 옮겨주어야 하죠. 그렇지 않으면 Free가 않됩니다.
> Move(nSize, P^, sizeof(LongInt));
이건 P에다가 nSize값을 복사하는 것입니다.
> Inc(P, sizeof(LongInt));
이렇게 증가시켜주지 않으면 아까 써준 값에다가 그대로 덮어써버리죠. 아까 써준 다음
위치에다가 데이타를 쓰기 위해서 입니다.
> Move(Buff[1], P^, nSize);
Buff에 들어있는 값들을 nSize만큼 P에 기록을 하는것이네요...
GetMem과 FreeMem은 항상 짝을 이루어야 하구요... 아래와 같이 하면 절대 프리되지
않습니다. 둘을 바꿔 써주시던가.. Mem := nil;이 없어야 겠죠...
> mem := nil; // 이순간 이전의 포인터를 잃어버리죠...
> freemem(mem);
이 Mem이란 포인터는 첨 8바이트에 Buff의 크기가 들어가고 그 다음 5번째 바이트부터
Buff의 크기만큼 데이터가 저장되는 구조군요...
^^ 항상 즐코하세요.
wrote:
> 꾸~~~뻑
> 메일은여..요쪽으로
>
> toto98@thrunet.com
>
>
> buff : string 전역변수
> s : string 지역변수
> nsize :integer 지역변수
> mem, p : pchar
> Buff := S;
> nSize := length(Buff); //256
> GetMem(Mem, nSize + sizeof(LongInt)); // 메모리할당
> P := Mem; // 왜 여기서 p에다가 넘기는지 그냥mem으로 구현하면 안되는지..
> Move(nSize, P^, sizeof(LongInt)); // 여기는 왜 이렇게 구현을 했는지..
> Inc(P, sizeof(LongInt)); // 왜 여기는 메모리 번지를 증가시켜야 하는가..
> Move(Buff[1], P^, nSize); // 이건 string을 pchar로 변환
>
> 저기 저 내용을 정확히 알고 싶어여..
> 왜 저렇게 구현을 한것인지 말이져..
> 이거여..쓰레드에서 돌아가는 건데여..
> 메모리를 계속해서 잡아 먹어여..(나쁜 넘~)
> 아무리 해도 전 잡아 낼수 가 없네여..
> 슬픈넘~
> 8시간 동안 별의별 방법을 해 봤지만..대처 방법을 못 구했습니다.
> 여기에서
> 마지막에..
> mem := nil;
> freemem(mem);
> 을 해도 역시 메모리는 계속증가하고 있네여..
> 원래는 없었슴..
>
> 제발 살려주세엽~~~
>
>
>