inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

독하게 시작하는 C 프로그래밍

[필수 실습 문제] 잘못된 메모리 복사

선생님 디스어셈블리를 활용해서 코드를 보다보니~~

해결된 질문

254

박영숙

작성한 질문수 3

0

선생님 디스어셈블리를 활용해서 코드를 보다보니 제 소스코드 위에서도 작업을 하는것 같고 아래쪽에서도 작업이 이루어 지더라구요 위쪽에서는 add byte ptr [rax],al 아래쪽에서는 뭐가 쫌 일어나다가 00007FF7A71E1001 int 3 요런 명령이 나오더라구요~~ 요게 보니까 제소스코드 위아래로 c컴파일러?가 다른 작업을 하고 있는건가요?? 잘 몰라서 질문을 제대로 한건지도 모르겠네요 ㅠㅠ

c 컴퓨터-구조 assembly-language vc++

답변 1

1

널널한 개발자

컴파일러가 다른 작업을 하는 것이 아니라 내가 작성한 코드 외에 추가로 코드가 더 들어가는 것입니다.

특히 디버그 모드로 프로그램을 빌드 할 경우 런타임 오류를 추적하기 위한 캐너리 비트를 추가하도록 스택 구조를 운영하거나 함수 반환 시 스택 프레임 손상이 없는지 검사하는 등 다양한 코드가 더 추가됩니다. 그 코드를 추가한 것은 물론 컴파일러 입니다. 참고하시기 바랍니다. 😄

0

박영숙

네 답변너무 감사합니다~~ c언어는 뭔가 순정같은 느낌이라 다른 코드같은건 별로 안넣을줄 알았는데 짧은 코드에도 엄청나게 다른 코드가 추가되는군요!! 이 코드를 다 보고 읽으신다는 분들은 컴터랑 별로 차이가 없으신거 같아요 ㅠㅠ.
혹시 이 글 보실다른 분들에게 추가로 말씀드리면 더계속 내리니까 물음표가 나오는데 요게 이 프로세스랑은 이제 상관없는 메모리들인거 같아요~~ 심심하면 내려보세요

scanf("%d\n") 의미

0

20

1

주소 연산자(&) 간접 지정자(*) 반대 개념

0

33

1

Virtual Memory, Memory, Memory mapping tables

0

51

1

샘플코드 출력 오류 발생 질문드립니다

0

63

2

값의 교환에 사용되는 변수의 위치.

0

88

2

메모리 비교에 관한 질문

0

81

2

문자열 Null

0

63

1

C, C++

0

88

2

문자열 입출력 코드 에러

0

60

2

선생님! 120화 2분 50초 질문입니다.

0

67

1

caller 가 메모리 할당 해제를 할 때의 문제점 질문

0

64

2

단축키 맞는지 여부 문의드립니다.

0

60

2

문자열을 사용하는 이중 포인터에 대하여 질문합니다

0

66

1

char 포인터 변수의 크기에 대하여 제가 이해한 것이 맞을까요

0

78

2

용어 설명 필요

0

57

2

stdin, stdout

0

71

2

필수 실습 (최댓값을 반환하는 함수)

0

93

2

아......ㅠㅠ

0

100

2

버퍼 내 엔터

0

72

1

2진수 뺄셈에서 carry-out

0

112

2

union 식별자는 실무에서 보통 어디에서 사용하나요?

0

80

2

필수실습문제 공부법 (진도 vs 복습)

0

104

2

예제파일 다운로드

0

79

2

Visial Studio Code 를 설치해서 사용해도 수업을 따라가는데 지장이 있나요?

0

119

3