2009-12-19 4 views
3

지금까지 델파이 7을 사용하여 개발 중입니다. TStringLists 내 DLL에 내가 모든 프로그램 및 dll 개발 첫 번째 단위로 FastShareMem 단위를 사용합니다.Delphi-2010에서 FastShareMem이 여전히 필요합니까?

Delphi-2010으로 마이그레이션해야한다면 FastShareMem이 여전히 필요합니까?

당신이 제공 할 수있는 통찰력에 감사드립니다.

+1

"ShareMem/Delphi DLL을 사용한 문자열 교환"과 거의 동일합니다.

답변

5

짧은 답변 : 아니, SimpleShareMem 델파이 2010

긴 답을 제공 : 예, 델파이는 여전히 its own memory manager 가지고 있으며, 메모리는 다른 (DLL)에 반환 할 수없는 하나의 메모리 관리자 (EXE)에서 주장했다. 그러나 Delphi 2006 Delphi 이후에는 FastMM이라는 새로운 메모리 관리자가 제공됩니다.이 관리자는 FastShareMem과 동일한 기능을 수행 할 수 있으며 추가 dll을 배포 할 필요가 없습니다. SimpleShareMem이라는 유닛을 사용해야합니다. FastMM에는 체크 아웃하려는 다른 nice features도 있습니다. FastMM은 Delphi 7 BTW에서도 사용할 수 있습니다.

메모리 관리자가 공유되므로 런타임 패키지로 컴파일하는 경우에는 이러한 트릭을 사용할 필요가 없습니다. 또한 동일한 유형을 공유하는 이점이 있습니다. 더 이상 TFont 문제에 TFont를 할당 할 수 없습니다. 물론 이는 런타임 패키지를 배포해야 함을 의미합니다.

+0

이해가 안되는 부분은 무엇입니까? SimpleShareMem이 훨씬 더 좋다면, 왜 Delphi가 기본으로 포함시키지 않는지? 이제 우리는 그것이 모든 프로그램과 DLL에 추가되었는지 확인해야합니까 ??? 런타임 패키지를 사용하지 않는 이유는 exe 및 dll로 구성된 여러 프로젝트가 있기 때문입니다. f.i를 업그레이드 할 경우. Development Express 구성 요소의 새 버전으로, 모든 exe ​​및 런타임 패키지를 사용자에게 다시 컴파일해야합니까? dll을 사용하여, 나는 단지 그것을 작업하고 싶을 때 dll을 재 컴파일한다. 당신이 생각하기에, 나는 프로그래밍의 모든 년 동안 런타임 패키지를 사용하지 않았다. 그래서 나는 틀릴 수도있다. – Edelcom

+0

공유 메모리 관리자는 약간의 오버 헤드가 있기 때문에. 대부분의 응용 프로그램이 오버 헤드없이 수행 할 수 있습니다. 그것이 선택적인 이유입니다. 또한 dll과 exe를 사용할 수있는 방법에 몇 가지 의미가 있습니다. 도움에 관한 내용을 읽을 수 있습니다. –

+0

런타임 패키지의 공용 인터페이스가 변경된 경우에만 해당 런타임 패키지를 사용하는 프로젝트를 다시 컴파일해야합니다. 얼마나 자주 당신에게 달렸습니까. 런타임 패키지를 사용하지 않는 경우 어쨌든 해당 프로젝트를 다시 컴파일해야하며 그렇지 않으면 변경 내용이 포함되지 않습니다. 런타임 패키지는 또한 특정 부분이 1 개 이상의 프로젝트에서 사용될 때 메모리와 디스크 공간을 절약 해줍니다. –

1

아니요, 대신 SimpleShareMem을 응용 프로그램 및 DLL의 첫 번째 단위로 사용하십시오.

Delphi 2007 이상에는 기본 메모리 관리자 인 FastMM이 포함되어 있습니다.이 메모리 관리자는 SimpleShareMem에서 사용하며 응용 프로그램과 함께 DLL을 배포 할 필요가 없습니다.

관련 문제