메모리 할당관련 질문^^

mosad34의 이미지

안녕하세요~ 윈도우에서 처리할 질문이긴하나 고수님들에게 조언을 구하고자 이곳에 질문을 올립니다.

현재 서버에서 받은 데이터를 파일로 남기거 이외에

메모리에 쌓아 메모리 포인터로 반환하는 작업을 진행하려고 구상중에 있습니다.

근데 문제가 chunked방식으로 데이터를 내려받기 때문에 전체 내려받을 사이즈를 알수가 없는

상태입니다.

그리고 파일의 사이즈가 엄청작을수도, 또는 아주 기가단위의 큰용량으로 내려올 수 도 있습니다.

그래서 큰용량의 기준으로 virtualalloc 함수를 써서 일정 사이즈의 메모리를 할당해놓고

해당 메모리에 서버에서 내려받은 데이터를 기록하다가 작으면 다시 더 메모리를 늘려서

해당 메모리에 다시 기록 하는 방식으로 처리하려고 합니다.

근데 비슷한 질물을 올렸었는데 new나 malloc나 결과적으로 큰 메모리를 적재하게 되면 내부적으로

virtualalloc를 사용한다고 적어놓았네요..

그렇다면 이런상황에서 굳이 virtualalloc를 사용할 필요는 없을거 같은데...오히려 작은 사이즈를 할당할때는 virtualalloc 보다 malloc가

더 낮다고 들었거든요..

저런 경우 어떤방식으로 좀 풀어나가는게 현명할지 조언을 부탁드립니다...

아 그리고 또는 메모리맵을 활용해서 처리할 수 도있을거 같은데..메모리맵에다가 데이터 적재후 mapviewoffile등의 함수로 메모리 포인터를
반환할 수 도 있을거 같습니다.

선배님들들 어떻게 처리하는것이 좋을가요??

jos77의 이미지

그냥 malloc 으로 OS 에서 처리하게 하는게 맞을 듯 합니다... 전부 직접 관리하려면 공부할게 워낙 많아서 ^^;
chunk 처리처럼 그냥 일정 100MB 단위크기 정해두고 1개 2개 ... n 개 식으로 (배열 처리하듯 ㅋ) 할당했다가 합쳐서 쓰면 안되는지요

-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr

mosad34의 이미지

우선 좋은 의견을 내주셔서 감사합니다^^

위와 같은 알수없는 크기의 데이터를 처리시에는 Virtualalloc를 사용하여 많이 처리들 한다고 합니다^^

Virtualalloc 가 메모리 Reserve 와 commit 옵션을 제공하기때문에 해당 옵션을 사용하여 처리하려고 합니다.

jos77님이 달아주신 내용과 처리방식은 별반차이가 없다고 볼수있겠는데요

100 MB의 메모리를 Reserve하고(실제 메모리 할당은 하지 않고 예약만된상태), 약 2MB 단위로 commit(실제 메모리할당)하여

데이터를 쌓아나가는 방식으로 진행하면 될듯싶습니다.

좋은 의견 감사합니다^^

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.