나는 Moai 소스 코드를 읽고 있었는데 왜 이것이 충돌을 야기하는지에 대해 궁금해졌습니다.null 포인터의 참조 해제로 인해 충돌이 발생하는 이유는 무엇입니까?
나는 그 발췌 문장을 정말로 이해하지 못합니다. 파일 A에서
:
#define UNUSED(p) ((void)p)
파일 B에서는 :
//----------------------------------------------------------------//
/** @name crash
@text Crashes Moai with a null pointer dereference.
@out nil
*/
int MOAISim::_crash (lua_State* L) {
UNUSED(L);
int *p = NULL;
(*p) = 0;
return 0;
}
는 편집 :
는내가 이해하지 못하는 있었는지의 부분은 "존중"이 무엇을 의미하는지 생각합니다. 그래서 당신이 그것을 당신의 대답에 넣으면 그것은 굉장 할 것입니다.
'UNUSED (L);은'L '이 사용되지 않는다는 경고를 표시하지 않습니다. 'return 0;'은 우리가 함수가 정수를 리턴했다고 말했기 때문에 컴파일러를 행복하게 유지하는 것입니다. (물론, 실제로 돌아 오지 않습니다.) –
나는 매우 명확하고 기술적 인 질문을했습니다! – speeder
또한 충돌이 일어나는 줄은 다소 명백합니다. 어떻게, 왜, 구체적으로 ... 알고 싶습니다. (* p), =, 0 또는 = 0입니다. = 1이면 작업? 등등. – speeder