코드 해석
답변
코드는 좀 더 많은 컨텍스트를 사용하는 것이 더 적합합니다.
// used to store pointers to allocated memory
unsigned char *n[NO_OF_POINTERS];
int s[5000]; // used to store sizes when testing
....
for(i=0;i<NO_OF_ITERATIONS;i++) {
k=myrand()%NO_OF_POINTERS; // pick a pointer
if(n[k]) { // if it was allocated then free it
// check that the stuff we wrote has not changed
if(n[k][0]!=(unsigned char)(n[k]+s[k]+k))
printf("Error when checking first byte!\n");
if(s[k]>1 && n[k][s[k]-1]!=(unsigned char)(n[k]-s[k]-k))
printf("Error when checking last byte!\n");
FREE(n[k]);
}
size=randomsize(); // pick a random size
size=1;
n[k]=(unsigned char *)MALLOC(size); // do the allocation
s[k]=size; // remember the size
n[k][0]=(unsigned char)(n[k]+s[k]+k); // put some data in the first and
if(size>1) n[k][size-1]=(unsigned char)(n[k]-s[k]-k); // last byte
}
마지막 두 줄
는 제 1 및 포인터 값 (n[k]
)에 기초하여 수식 할당 (
s[k]
)의 크기 및 포인터 인덱스 (
k
)를 이용하여 값의 마지막 바이트를 설정. 이 수식에는 아무런 의미가 없습니다. 포인터 할당에 따라 저장 될 값의 계산 일뿐입니다.
if
강조 표시된 문은 메모리를 해제하기 전에 첫 번째 (n[k][0]
) 바이트와 마지막 (n[k][s[k]-1]
) 바이트의 값이 변경되지 않았는지 확인합니다. 이 코드는 기본적으로 VirtualAlloc
및 VirtualFree
함수에 대한 테스트 하네스입니다.
고마운 친구, 그 미친 기능을 이해하려고 노력했지만 이제는 수학적으로 난센스 인 것으로 밝혀졌습니다. 그러면 모든 것이 이제 밝아졌습니다 !!! –
자세한 이름 붙은 변수를 들어 보자. – Deanna
n
은 unsigned char
의 다차원 배열처럼 보입니다. 첫번째 라인 :
if(s[k]>1 && n[k][s[k]-1]!=(unsigned char)(n[k]-s[k]-k))
가 보인다
if(n[k][0]!=(unsigned char)(n[k]+s[k]+k))
서브 어레이 n[k]
의 첫 번째 요소를 검사 두번째 줄은 unsigned char
-(n[k]+s[k]+k)
캐스트의 합과 동일하지 않은 배열 s
의 k
번째 요소가 1보다 크고 (논리 및) 하위 배열 n[k]
의 요소 s[k]-1
이 일치하지 않는지 확인해야합니다. al의 결과로 (n[k]-s[k]-k)
전체적으로 꽤 나쁜 코드이고 더 좋은 변수 이름을 사용할 수 있습니다!
Ahh 나는 OP가 http://ideone.com/pkhGL에 준 링크를 알아 냈다. @ AndrewCooper의 답변이 더 좋습니다. – peacemaker
- 1. 바이트 코드 해석
- 2. ASCII 코드 해석 (어셈블리)
- 3. 장고 추적 코드 해석
- 4. 코드 해석 - 비 PHP 프로그래머
- 5. IDA Pro의 C 코드 해석
- 6. SQL Server의 sys.objects에서 형식 코드 해석
- 7. 코드 메트릭 해석 방법 (SourceMonitor에서 계산)
- 8. 런타임 코드 해석 및 실행 이해
- 9. 재 해석
- 10. FFT 해석
- 11. ERD 해석
- 12. 해석 언어
- 13. 문자열 해석
- 14. 해석 커피 스크립트는
- 15. 인스턴스 해석 - Autofac
- 16. DDD에서 eFlags 해석
- 17. AppStore/iOS 앱 및 해석 코드 - 어디에서 선을 그립니다.
- 18. 루비 프로파일 러는 해석
- 19. Java 크래시 파일 해석
- 20. gzip : 압축 해제를위한 비트 해석
- 21. IE 및 Webkit에서 의도 한대로 헤더 해석 해석
- 22. 세이지의 유한 요소 해석
- 23. 검색 결과 해석
- 24. 정규 표현식의 동적 해석
- 25. 웹킷의 기발한 비율 해석
- 26. MATLAB 방정식 시스템을 해석
- 27. 분할 방법 (수치 해석)
- 28. C89의 고수준 해석 언어
- 29. 밀도 플롯을 R로 해석
- 30. 콜그 그리드 데이터 해석
더 많은 코드를 표시 할 수 있습니까? 'n'과's'와'k'는 어떻게 선언됩니까? 나는 추측 할 수 있지만 그것을 추가하면 더 좋을 것입니다 :) – peacemaker
혼란스럽게하는 코드에 대해 더 자세히 설명하고 그에 따라 질문 제목을 업데이트하여 향후 다른 사람들에게 유용 할 것입니다. 그렇지 않으면 Too Localized로 인해 닫힐 수 있습니다. –