2012-11-26 2 views
55

내가 valgrind에 대해 내 프로그램을 실행할 때 다음과 같은 경고가 발생했습니다. 이 Valgrind 경고는 무엇을 의미합니까? - 경고 세트 주소 범위 perms

Warning: set address range perms: large range [0x4d59d040, 0x6159d040) (undefined) 
Warning: set address range perms: large range [0x194f7030, 0x2d4f7050) (noaccess) 
Warning: set address range perms: large range [0x3959d030, 0x6159d050) (noaccess) 

는 일부 인터넷 검색 후 나는 많이 말하지 않는 Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions이라고 here에서 발견했다.

내 프로그램에서 힙에 많은 양의 메모리를 할당하지 않습니다. (realloc의 전체 무리 후에 2-3GB의 RAM에 도달 할 수 있습니다.)

그러나 아무런 할당이 실패 했음에도 불구하고 경고가 나타났습니다.

그래서이 메시지가 실제로 무엇을 의미하는지 궁금합니다. 나는 어떤 종류의 기억 허가가 없다? (하지만 할당이 성공했습니다)

답변

53

특히 큰 메모리 블록에서 사용 권한이 변경되었다는 것을 의미합니다.

mprotect을 호출하거나 매우 큰 메모리 할당 또는 할당 해제가 발생하는 경우 (예 : mmap 또는 munmap 호출) 발생할 수 있습니다.

첫 번째 목록은 약 320Mb의 메모리를 undefined으로 설정하는 것입니다.이 번호는 처음에는 정의되지 않은 것으로 표시됩니다. 다른 사람들은 비슷한 크기의 블록을 모두 메모리의 할당 해제와 관련된 noaccess으로 설정하고 있습니다.

+0

나는 본다. 사람이 걱정해야 할 것이 있습니까? (주로 Valgrind 개발자의 이익을위한 것이 아니기 때문에 추측하고 있습니다.) –

+8

내 답변을 약간 확장하고 명확히했지만, 기본적으로 걱정할 필요가 없습니다. – TomH

+0

(정의) - (noaccess) - (정의) - (noaccess) - (정의)로 끝나는 다섯 가지 오류가 나열되면 어떻게됩니까? –

관련 문제