C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[12898] Re:[질문] DLL에서의 malloc
박지훈.임프 [cbuilder] 1163 읽음    2001-11-21 01:08
단순히 그런 문제는 아닌 거 같은데요.
예를 들어, 델파이쪽에서 FreeMem() 하기 전에 잘못된 동작을 했을 경우에도 FreeMem()에서
액세스바이얼레이션이 발생할 수 있습니다.
그러니.. 할당받은 메모리를 해제하기 전에 어떤 동작을 하는지(빌더 모듈에서든 델파이 모듈에서든)
그 부분들의 소스가 필요하겠구요.

그리고.. dll에서 할당한 메모리를 메인에서 해제한다는 것도 별로 좋은 아이디어같지는 않네요.
제 경우에는 그런 식으로는 절대 하지 않기 때문에 그렇게 했을 경우 어떻게 될지는 모르겠습니다만,
물론 이론적으로는 이상이 없긴 합니다. (dll에서 할당한 메모리라도 결국은 프로세스의 히프이므로.)
하지만, 저라면.. 빌더 dll에서 할당한 메모리는 빌더 dll에 함수를 하나 더 만들어서 거기서 해제하도록
하겠지요.

또... 이건 별 중요한 것은 아니지만, 델파이쪽에서 FreeMem() 함수를 썼다면 빌더쪽에서도
GetMem() 함수로 메모리를 할당해주는 편이 좋을 거란 생각이 드는군요.

그럼...


안시현 님이 쓰신 글 :
:  안녕하세요.
:
:  빌더에서 dll만들어서 델파이에서 사용하고 있는데요.
: (팀 프로젝트 때문에 델파이용으로 맞춰서 하고있어요.)
:
:  빌더에서 만든 dll내부에서 malloc으로 할당받은 메모리의 포인터를
: 함수리턴 값으로 넘겨주면, 델파이에서 그 포인터를 받아서
: 가지고 놀다가 해제를 시켜줘야 하잖아요.
: 그래서 FreeMem(포인터); 를 해줬는데요.(델파이에서요)
: 이놈이 에러를 내더라구요. 억세스 바이얼레이션인가요? 그놈이 뜨더라구요.
:
:  어차피 할당받는 메모리를 해제하는 방법은 컴파일러에 관계 없을텐데.
: 에러를 내는 이유를 모르겠네요. 디버깅툴을 다루지 못해서 메모리가 새는지
: 알수도 없구요.. 긁적.
:  혹시 DLL내부에서 할당받은 메모리는 자체적으로 해제를 한다든지(..쿨럭)
:
:  도움 부탁드립니다. 꾸벅.

+ -

관련 글 리스트
12890 [질문] DLL에서의 malloc 안시현 734 2001/11/20
12898     Re:[질문] DLL에서의 malloc 박지훈.임프 1163 2001/11/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.