내 프로그램에 메모리 누수가 있습니다. malloc
(및 new
)에 대한 모든 호출을 할당 된 내용을 추적하는 자체 함수 호출로 바 꾸었습니다. 프로그램이 끝나면 처음에 할당 된 것들과 마지막에있는 것들을 비교하여 "유출"되는 모든 것을 나열합니다.숫자가 끝나는 지 테스트하는 방법은 무엇입니까?
최종 목표는 "새는"위치의 목록을 가져 와서 배열에 넣는 것입니다. 무언가가 할당 될 때마다 "누설"주소 목록과 대조하여 일치하는 항목이 있으면 특별한 기능을 호출하여 중단 점을 설정할 수 있습니다 (여기서 어떤 개체가 유출되는지 알아낼 수 있습니다. 그들과 적절하게 대처한다.)
문제는 프로그램을 실행할 때마다 주소의 처음 몇 부분이 변경된다는 것입니다. 예를 들어, 처음으로 하나의 "누출"주소는 0x10c10
이고 다음 번에는 0x20c10
일 수 있습니다. 마지막 몇 자릿수는 항상 동일하지만 처음 몇 자릿수는 동일하지 않습니다.
마지막 몇 자릿수 만 비교할 수있는 방법이 있습니까? 내가 모드를 사용하여 생각하고 있었지만, 나는 효과가있는 것을 고를 수 없었다. 이것들은 문자열이 아닌 정규의 정수입니다.
'mod' ('%'을 의미한다고 생각하십니까?)가 작동하지 않는 이유는 무엇입니까? 그것은 간단한 수학입니다. 어떻게 작동하지 않을 수 있습니까? –
마스크 :'addr = number & 0x0000FF; ' –
다른 프로세스가 동일한 실행 파일을 실행하고 있어도 다른 프로세스의 메모리 맵은 동일하지 않을 수 있습니다. 어떤 주소의 마지막 비트도 아닙니다. –