GMPlib 사용시 메모리 문제.
안녕하세요
큰수를 다루는 프로그램을 만드는중인데, GMPlib이 속도도빠르고 좋아서 사용하고 있습니다.
대략적인 프로그램 구조는
임의의 입력값을 함수가 판별
판별과정은 파일에 저장되어있는 데이터와 비교하여 진행
만약 판별해서 true값이 나오면 비교했었던 데이터에 새로운값을 덧붙임
반복
이런구조입니다.
프로그램은 잘돌아가고 결과값도 만족하는데 문제가 생겼어요. 애초에 GMPlib을 사용했던것이 무한대의 수를 표현하고 빠른 속도의 장점이 끌려서
사용했는데.
신기하게도 프로그램을 실행하면 메모리점유가 계속 늘어나서 결국 메모리부족으로 프로그램이 자동종료됩니다.
근데 아무리 생각해도 왜이렇게 메모리를 많이 잡아먹는지 이해가 안가요. 처음에는 데이터파일의 크기가 커지면 불러오고 하는데 메모리가 부족한가싶어 분할저장을 했는데도 그러네요.
정수라 해봤자 지금 계산하는건 7자릿수 밖에 안되구요. 7자릿숫자 두개로 (하나는 데이터 하나는 입력값) 연산을해서 판별하는건데
어려운 공식도아니고 사칙연산 두세번하는과정에서 이렇게 메모리를 잡아먹는다고 생각되질 않아서 이렇게 글을 올립니다.
혹시 비슷한 경험을 하셧거나 아이디어가 있으신분 계신가요?
현재 작업중인 리눅스시스템은 512램이구요. 특이하게도 데이터용량이 4.7메가정도차면 메모리 얼로케이트에러로 꺼집니다.
데이터파일은 처음에는 1바이트로 시작하지만 입력값이 계속 들어오면서 판별 함수가 true를 리턴하면 데이터파일끝에 입력된값을 추가로 씌워 업데이트되는 방식입니다.
혹시나 싶어 위에도 말씀드렸다싶이 파일을 분할해서 800k가 되면 다른이름의 파일을 만들어 저장되게 하였습니다만 메모리가 계속 올라가는 현상은 여전하네요.
도무지 영문을 모르겠습니다.
......
valgrind 돌려 보세요
감사합니다
덕분에 좋은거 배웠어요 :)
메모리누수 잘 잡았습니다.
답변 고마워요~
댓글 달기