GMPlib 사용시 메모리 문제.

avanwz의 이미지

안녕하세요
큰수를 다루는 프로그램을 만드는중인데, GMPlib이 속도도빠르고 좋아서 사용하고 있습니다.
대략적인 프로그램 구조는

임의의 입력값을 함수가 판별
판별과정은 파일에 저장되어있는 데이터와 비교하여 진행
만약 판별해서 true값이 나오면 비교했었던 데이터에 새로운값을 덧붙임
반복

이런구조입니다.
프로그램은 잘돌아가고 결과값도 만족하는데 문제가 생겼어요. 애초에 GMPlib을 사용했던것이 무한대의 수를 표현하고 빠른 속도의 장점이 끌려서
사용했는데.
신기하게도 프로그램을 실행하면 메모리점유가 계속 늘어나서 결국 메모리부족으로 프로그램이 자동종료됩니다.
근데 아무리 생각해도 왜이렇게 메모리를 많이 잡아먹는지 이해가 안가요. 처음에는 데이터파일의 크기가 커지면 불러오고 하는데 메모리가 부족한가싶어 분할저장을 했는데도 그러네요.
정수라 해봤자 지금 계산하는건 7자릿수 밖에 안되구요. 7자릿숫자 두개로 (하나는 데이터 하나는 입력값) 연산을해서 판별하는건데
어려운 공식도아니고 사칙연산 두세번하는과정에서 이렇게 메모리를 잡아먹는다고 생각되질 않아서 이렇게 글을 올립니다.
혹시 비슷한 경험을 하셧거나 아이디어가 있으신분 계신가요?

현재 작업중인 리눅스시스템은 512램이구요. 특이하게도 데이터용량이 4.7메가정도차면 메모리 얼로케이트에러로 꺼집니다.
데이터파일은 처음에는 1바이트로 시작하지만 입력값이 계속 들어오면서 판별 함수가 true를 리턴하면 데이터파일끝에 입력된값을 추가로 씌워 업데이트되는 방식입니다.
혹시나 싶어 위에도 말씀드렸다싶이 파일을 분할해서 800k가 되면 다른이름의 파일을 만들어 저장되게 하였습니다만 메모리가 계속 올라가는 현상은 여전하네요.

도무지 영문을 모르겠습니다.

hiseob의 이미지

valgrind 돌려 보세요

avanwz의 이미지

덕분에 좋은거 배웠어요 :)
메모리누수 잘 잡았습니다.
답변 고마워요~

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.