DLL관련 질문입니다
글쓴이: carpe / 작성시간: 목, 2006/08/10 - 5:48오후
dll을 공부하다가 여러 궁금증이 생겼습니다.
답변 부탁드리겠습니다.
1. 자기 자신을 로딩하는것도 가능한가요?
즉 dll에서 자기 자신을 다시 LoadLibrary 하였을경우 어떻게 되나요?
2. LoadLibrary를 하면 dll의 핸들값을 return을 하는데요,
그럼 여러 모듈에서 하나의 dll을 LoadLibrary하면 동일한 handle값이 return되는 것인가요?
3. dll을 로딩한 모듈이 FreeLibrary()를 하지 않고 종료를 해버리면 해당 dll은 자동으로 Freelibrary()가 되나요?
, A라는 모듈이 B라는 dll을 로딩하고 B라는 dll이 다시 C라는 dll을 로딩하였을 경우에
A모듈이 그냥 종료하면 B dll과 C dll은 자동으로 free가 되는것인가요??
4. 일반 모듈에서 dll을 로딩하는것과 dll에서 다른 dll을 로딩하는것에 있어서 차이가 있나요??
질문이 좀 많긴한데요, 답변 부탁드리겠습니다. ~
Forums:
1. 자기 자신을
1. 자기 자신을 로딩하는것도 가능한가요?
즉 dll에서 자기 자신을 다시 LoadLibrary 하였을경우 어떻게 되나요?
->자기 자신을 로딩하는것도 가능은 합니다.. 그런데 잘못하다간 무한 재귀 로딩이 될지도 모르니 추천하진 않습니다.
2. LoadLibrary를 하면 dll의 핸들값을 return을 하는데요,
그럼 여러 모듈에서 하나의 dll을 LoadLibrary하면 동일한 handle값이 return되는 것인가요?
->dll을 로딩하면 각 dll이 모듈의 가상메모리에 매핑이 되므로 모듈끼리 핸들공유는 안됩니다.
3. dll을 로딩한 모듈이 FreeLibrary()를 하지 않고 종료를 해버리면 해당 dll은 자동으로 Freelibrary()가 되나요?
, A라는 모듈이 B라는 dll을 로딩하고 B라는 dll이 다시 C라는 dll을 로딩하였을 경우에
A모듈이 그냥 종료하면 B dll과 C dll은 자동으로 free가 되는것인가요??
->우선 기본적으로 프로세스가 종료가 되면 해제되지 않은 모든 시스템자원은 os가 회수를 하긴 합니다.
4. 일반 모듈에서 dll을 로딩하는것과 dll에서 다른 dll을 로딩하는것에 있어서 차이가 있나요??
->차이는 없습니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
댓글 달기