Dos 용 툴을 개발하고 있는데요.
데이터 전송때문에 128KBytes 만큼의 메모리를 버퍼로 잡고 써야됩니다.
malloc 함수로는 범위를 넘어서버려서 farmalloc 함수와 farfree 함수를 사용하여 메모리할당/해제를 해주려고 하는데요.
이게 두세번 할당/해제를 반복해버리면 그 뒤부터 할당이 실패하네요.
(컴파일은 Boland C++ 4.5 에서 large 모델로 했습니다.)
왜그럴까요?
물론 버퍼를 잡아놓고 사용하다가 프로그램 종료할때 해제하면 해결되는 문제이긴 하지만 궁금해서 질문올립니다.
다음은 테스트한 소스입니다.(물론 리얼도스에서 테스트했습니다.)
int main( int ac, char *av[] )
{
int i=0;
for( i=0; i<10; i++)
{
char far *pt = (char far *)farmalloc(131072L); // 1024*128
printf( "[%d], farmalloc() test, Pt[0x%lX]\n\r", i, pt );
farfree( pt );
printf( "[%d], farfee([0x%lX]), i, pt );
}
return 0;
}
도와주세요.
|