malloc로 동적메모리 할당 후 memset에서 에러.

jungjury의 이미지

int *Hlabeling;
Hlabeling = (int *)malloc(sizeof(int)*blocksize);

while( 1)
{
   memset ( Hlabeling, 0x00, sizeof(int)*blocksize );

 .......


}


free ( Hlabeling );
Hlabeling = (int *)malloc(sizeof(int)*imagesize);
memset( Hlabeling, 0, sizeof(int) * imagesize);

900kb이상으로 이미지 사이즈가 커지면 whie문안에 있는
memset에서 에러가 납니다.. blocksize는 900입니다.

이상하게도 맨 아래 세줄을 지워주면 이상이 없구요..
메모리 부족으로 할당 에러 인가요..?

Heap corruption detected at 017E1120
First-chance exception in imageprocessing.exe (NTDLL.DLL): 0xC0000005: Access Violation.
First-chance exception in imageprocessing.exe: 0xC0000005: Access Violation.

쌀밥의 이미지

이건 다른 이야기지만

아랫쪽 세줄이
할당 했던 메모리 사이즈를 줄이려고 하시는 거라면
realloc을 사용하시는게 어떨까 하는 생각이 드네요...

일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.

cocas의 이미지

jungjury wrote:
int *Hlabeling;
Hlabeling = (int *)malloc(sizeof(int)*blocksize);

while( 1)
{
   memset ( Hlabeling, 0x00, sizeof(int)*blocksize );

 .......


}


free ( Hlabeling );
Hlabeling = (int *)malloc(sizeof(int)*imagesize);
memset( Hlabeling, 0, sizeof(int) * imagesize);

900kb이상으로 이미지 사이즈가 커지면 whie문안에 있는
memset에서 에러가 납니다.. blocksize는 900입니다.

이상하게도 맨 아래 세줄을 지워주면 이상이 없구요..
메모리 부족으로 할당 에러 인가요..?

Heap corruption detected at 017E1120
First-chance exception in imageprocessing.exe (NTDLL.DLL): 0xC0000005: Access Violation.
First-chance exception in imageprocessing.exe: 0xC0000005: Access Violation.

힙이 깨지는 경우에는 메모리 할당, 해제 연산만 올려주셔서는 문제를 찾기 어렵습니다. 다른 버퍼에서 오버플로가 나는 경우, 힙을 실제 사용하는 부분에서 오버플로우가 나는 경우 등 여러가지 side effect에 의해 영향을 받기 때문입니다. 전체 코드를 올려주시면 진단에 좀 더 도움이 될텐데요.

쌀밥의 이미지

에러메시지를 추가해주셨군요.

메시지로 봐서는 힙에 접근 에러가 생긴것입니다.

메모리 할당과 초기화과정에서 생긴 문제가 아닌것 같습니다.

아마도, 마지막의 세줄 뒷쪽에서 에러가 나실것 같은데,

뒤의 세줄을 지워서 잘 된다는 것은 아마도

sizeof(int)*blocksize 값이 sizeof(int)*imagesize 보다 크기 때문에
그럴것 같네요...

뒷쪽 코드를 잘 살펴 보시면 될듯 합니다.

일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.

익명 사용자의 이미지

올려주신 코드에는 별로 문제가 없습니다.

올려주신 코드가 원래 코드를 제대로 대변하는지 다시 확인 부탁드립니다.

에러는 while루프 안에서 나는데, 아래 세줄을 지워주면 에러가 없어진다고 하셨는데, 올려주신 코드만 봐서는 둘 사이의 상관관계를 짐작하기가 어렵군요.

jungjury의 이미지

감사합니다.. 덕분에 찾았습니다..

다른곳에서 사용하던 동적메모리양이 너무 많았나봅니다..

줄이니깐 됩니다...

안녕하세요 : )

쌀밥의 이미지

음..;
근데 메모리 사용량이 많다고 해서 access violation 에러가 나는건 좀 이상한것 같습니다.

어딘가 포인터 사용이 틀리신게 아닐까 하는 생각이 듭니다만...
참고만 하세요..;

일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.

익명 사용자의 이미지

쌀밥님 글보고.. 여러가지 이미지로 해보다가..

세로가 더긴 이미지만 메모리 에러가 나는것을 발견했습니다..

처음부터 실행과정을 검토하다가.. 찾았는데..

비트맵이미지를 가져오면서 거꾸로 된 영상을 뒤집으려고 한 부분에서 실수를 고치니 잘됩니다.. :cry:

(imageheight-j) -> (imageheight-1-j)

다른곳도 똑같은 실수를 했는데.. 우선 이부분만 고치니 됩니다...

for (j=0;j<imageheight;j++)
for ( i=0;i<imagewidth;i++)
{
   RGB->R[ [b](imageheight-1-j)[/b]*imagewidth+i ]=pRaster[rwsizei*j+3*i+2];
   ........................................................................................
}				}
jungjury의 이미지

for (j=0;j<imageheight;j++) 
for ( i=0;i<imagewidth;i++) 
{ 
   RGB->R[ (imageheight-1-j)*imagewidth+i ]=pRaster[rwsizei*j+3*i+2]; 
   ........................................................................................ 
}     

글 올리기전에 로그아웃 되버려서.. 틀린 것이 수정안되네요...

안녕하세요 : )

댓글 달기

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