마지막 문제 질문 있습니다.
115
작성한 질문수 1
//if (knight != nullptr)
//{
// if (knight->IsDead())
// {
// delete knight;
// knight = nullptr;
// // 내 풀이
// break;
// }
//}
저는 삭제가 된 메모리를 계속 건드리것으로 파악하고 break;문으로 for문을 빠져나오는 식으로 수정했는데 문제가 있는 해답인지 아닌지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. Jaemyeong Lee님.
말씀하신 코드는 메모리 관리의 중요한 부분을 다루고 있는데요. 앞으로 발생할 수 있는 잠재적인 문제 몇 가지를 함께 짚어보겠습니다.
메모리 삭제 후 접근:
delete knight;로 객체를 삭제한 후, 여전히 해당 객체를 가리키고 있는 포인터knight를 다른 곳에서 사용하려는 시도는 프로그램의 안전성을 해칠 수 있습니다. 프로그램이 예상치 못한 동작을 하거나 튕길 가능성이 있습니다.break 사용:
break를 사용해서for문을 빠져나오는 방식은 knight가 죽은 이후에 불필요한 처리를 피할 수도 있지만, 코드 구조가 커질수록 코드 유지보수가 어려워질 수 있습니다. 특히break가 어디서 사용되었는지 일일이 추적하기 복잡해질 수 있습니다.
기존에 유사한 문제에 대한 답변들이 있어 이를 참고하시면 도움이 될 것입니다:
- 마지막 문제 질문에서는 같은 문제 상황에서 정답이라고 볼 수 없는 상황에 대해 설명합니다.
- 혹시 마지막 문제 이렇게 하면 틀린 건가요?에서도 break 대신 다른 방식의 해결책에 대해 논의됩니다.
해당 부분은 메모리 안전성과 프로그램 흐름 제어에 있어 주의 깊게 다루어야 하는 사항입니다. 계속해서 질문자의 아이디어를 다양한 방식으로 시도해보세요. 프로그래밍에서는 다양한 접근 방식이 중요합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
소스코드와 관련하여 질문드립니다
0
66
1
map 컨테이너의 emplace 함수에 대해
0
108
2
시작이 안되네요...!
0
95
2
EAX 명령어 실행 시 RAX의 상위 32비트가 초기화 되는 이유
0
125
1
리틀 엔디안 장점 질문합니다.
0
129
1
메모리 창에 주소를 넣었는데 영어 꺠짐
0
124
1
타입변환#2 build시 knight 인접 stack이 침범당했다는 error가 발생합니다.
0
94
2
map #1 8분 58초 맵은 레드블랙트리로 이루어진 것 같습니다.
1
138
2
hello world 부터 오류 ㅠㅜ
0
186
1
지역변수가 스택? 레지스터
0
126
2
마지막 문제 질문드립니다.
0
162
2
메모리창이 비활성화됩니다.
0
98
1
이중포인터 강좌 부분 질문있습니다.
0
145
1
2를 더하는 이유
0
132
1
메모리 주소 창 엔디안 질문 드립니다. 인프런 봇 답변도 괜찮습니다
1
109
1
해당 코드는 왜 오류가 날까요?
0
153
1
강의 마지막부분에 질문이 있습니다.
0
190
2
Field초기화
0
140
1
virtual과 override 차이
0
313
2
3:30 참조자 리턴
0
165
1
map 찾기
0
155
1
프로그램 질문드려요
0
256
1
캐스팅 질문
0
135
1
암시적/명시적 생성자 쓸 때 주의할 점 공유
0
279
1





