malloc buffer size 잡을때

이병혁의 이미지

하나의 파일이 아래와 같이 file1, file2, file3, file4 로 합쳐져 구성되어 있습니다.

file = (file1)+(file2)+(file3)+(file4)

위의 file을 read 한 후, 각각의 file1, file2, file3, file4 로 이미지를 분리하려고 하는데요.
그러니까, 1개의 파일을 입력으로 넣으면, 4개의 파일로 분리해서 나오는거죠.
file1이나 file3, file4의 경우는 파일 사이즈 작아서,
별 문제없이 이미지 사이즈 만큼을 malloc하여, 사용하면 분리가 잘 됩니다.
그러나 file1의 경우는, 이미지 사이즈가 커서, malloc 에 실패하여, 파일을 분리할수가 없군요.
이런경우, 어떤 식으로 해야할까요?
일반적인 linux 서버에서는 file1도 위의 방법으로 문제없이 돌아가긴하는데,
보드에서는 메모리가 작아서 인지, file1 이미지 사이즈만큼, malloc이 쉽게 안되더라구요.
어떤 식으로 구현해야 할까요?
malloc 버터의 크기를 작게하고, loop 돌면서 write해야해야 할까요? 당연한건가? -_-;;
도움좀 부탁드릴께요. 좋은 하루 되십시오..^^

char *buf;
buf = (char *)malloc(buf_file1_size);
if(buf==NULL){
printf("malloc buf error. \n");
return -1;
}

if((outfp=fopen("file1.bin", "wb"))==NULL){
fputs("file1 open error!\n", stderr);
exit(1);
}

memset(buf, 0, buf_file1_size);
readBytes=fread(buf, 1, buf_file1_size, infp);
writeBytes = fwrite(buf, 1, readBytes, outfp);

mithrandir의 이미지

답을 이미 알고 계십니다.
적당한 사이즈를 잡는게 중요한데, blocksize * 배수로 해야 성능을 최대한 발휘할 수 있을겁니다.

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

이병혁의 이미지

블럭 사이즈 의 배수.. 로 한번 해봐야 겠네요..^^
답변 감사드립니다.

공부하자!

공부하자!

binilpaper의 이미지

mmap을 써도 되지 않을까요?

-----------------------------------------------------
세상은 인간이 해결해야할 문제들로 가득차 있다.

-----------------------------------------------------
세상은 인간이 해결해야할 문제들로 가득차 있다.

이병혁의 이미지

mmap으로도 사용해서,성능 비교 한번 해봐야 겠네요.
답변 감사드립니다. mmap mmap mmap....^^

공부하자!

공부하자!

댓글 달기

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