malloc로 동적메모리 할당 후 memset에서 에러.
글쓴이: jungjury / 작성시간: 수, 2005/11/30 - 1:01오전
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.
Forums:
이건 다른 이야기지만아랫쪽 세줄이할당 했던 메모리 사이즈를 줄
이건 다른 이야기지만
아랫쪽 세줄이
할당 했던 메모리 사이즈를 줄이려고 하시는 거라면
realloc을 사용하시는게 어떨까 하는 생각이 드네요...
일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.
Re: malloc로 동적메모리 할당 후 memset에서 에러.
힙이 깨지는 경우에는 메모리 할당, 해제 연산만 올려주셔서는 문제를 찾기 어렵습니다. 다른 버퍼에서 오버플로가 나는 경우, 힙을 실제 사용하는 부분에서 오버플로우가 나는 경우 등 여러가지 side effect에 의해 영향을 받기 때문입니다. 전체 코드를 올려주시면 진단에 좀 더 도움이 될텐데요.
에러메시지를 추가해주셨군요.메시지로 봐서는 힙에 접근 에러가 생긴
에러메시지를 추가해주셨군요.
메시지로 봐서는 힙에 접근 에러가 생긴것입니다.
메모리 할당과 초기화과정에서 생긴 문제가 아닌것 같습니다.
아마도, 마지막의 세줄 뒷쪽에서 에러가 나실것 같은데,
뒤의 세줄을 지워서 잘 된다는 것은 아마도
sizeof(int)*blocksize 값이 sizeof(int)*imagesize 보다 크기 때문에
그럴것 같네요...
뒷쪽 코드를 잘 살펴 보시면 될듯 합니다.
일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.
올려주신 코드에는 별로 문제가 없습니다.올려주신 코드가 원래 코드
올려주신 코드에는 별로 문제가 없습니다.
올려주신 코드가 원래 코드를 제대로 대변하는지 다시 확인 부탁드립니다.
에러는 while루프 안에서 나는데, 아래 세줄을 지워주면 에러가 없어진다고 하셨는데, 올려주신 코드만 봐서는 둘 사이의 상관관계를 짐작하기가 어렵군요.
감사합니다.. 덕분에 찾았습니다..다른곳에서 사용하던 동적메모리양
감사합니다.. 덕분에 찾았습니다..
다른곳에서 사용하던 동적메모리양이 너무 많았나봅니다..
줄이니깐 됩니다...
안녕하세요 : )
음..;근데 메모리 사용량이 많다고 해서 access violatio
음..;
근데 메모리 사용량이 많다고 해서 access violation 에러가 나는건 좀 이상한것 같습니다.
어딘가 포인터 사용이 틀리신게 아닐까 하는 생각이 듭니다만...
참고만 하세요..;
일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.
쌀밥님 정말 감사합니다..
쌀밥님 글보고.. 여러가지 이미지로 해보다가..
세로가 더긴 이미지만 메모리 에러가 나는것을 발견했습니다..
처음부터 실행과정을 검토하다가.. 찾았는데..
비트맵이미지를 가져오면서 거꾸로 된 영상을 뒤집으려고 한 부분에서 실수를 고치니 잘됩니다.. :cry:
(imageheight-j) -> (imageheight-1-j)
다른곳도 똑같은 실수를 했는데.. 우선 이부분만 고치니 됩니다...
[code:1]for (j=0;j<imageheight;
글 올리기전에 로그아웃 되버려서.. 틀린 것이 수정안되네요...
안녕하세요 : )
댓글 달기