묻고 답해요
143만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!
함수 호출을 하다가 리턴하기 전에 eip가 널이 되면 어떻게 동작하는지 궁금해서 한번 시도해봤는데요.예를 들면 main() 함수에서 A() 함수를 호출하고 또 A() 함수에서 중간에 B() 함수를 호출하는데B() 함수를 리턴하기 전에 eip 값을 0x00000000과 같은 널 값으로 고쳐보았습니다. 이렇게 하면 리턴하고나서 뭔가 에러?엑세스 위반? 이라는 게 뜨는 것 같더라구요근데 만약 이렇게 해서 엑세스 위반이 났을 때 어떤 함수를 호출할 때 잘못됐는지 디버깅 상에서 추적하려면 어떤 순서로 추적해야하는지 궁금합니다!
-
미해결홍정모의 따라하며 배우는 C++
함수 포인터 check_fnc에 관해 질문이 있습니다.
#include <iostream>#include <array>using namespace std;bool isEven(const int& number){ if (number % 2 == 0) return true; else return false;}bool isOdd(const int& number){ if (number % 2 != 0) return true; else return false;}void printNumbers(const array<int, 10>& my_array, bool (*check_fnc)(const int&)=isEven){ for (auto element : my_array) { if (check_fnc(element) == true) cout << element << " "; } cout << endl;}int main(){ std::array<int, 10> my_array = { 0,1,2,3,4,5,6,7,8,9 }; printNumbers(my_array); printNumbers(my_array, isOdd); return 0;}에서 if (check_fnc(element) == true)부분인데요, check_fnc가 함수 포인터고 이것이 함수의 주소를 저장하니까 isEven으로 기본값을 설정하면, 포인터가 isEven으로 찾아가서 함수를 호출하는 것이 맞나요?그리고 printNumbers(my_array, isOdd)부분에서는 check_fnc가 isOdd의 주소를 저장했으니까if (check_fnc(element) == true)의 check_fnc가 isOdd를 호출하는 것도 맞나요??