38.8 심사문제: 지뢰찾기
, 최 정인님이 작성코드를 이렇게 작성했는데,,,
1. 문자열이 배열의 가로칸에 저장될때 가로의 한칸당 하나의 문자가 저장되는 이유가 char이기 때문에 1바이트만 저장가능해서인가요?
2. memset함수 이용해서 0으로 값을 초기화하고 시작하라고 되어있던데, 0으로 초기화를 하지 않았는데도 제대로 나온 이유가 무엇인가요ㅠㅠ
Re: 38.8 심사문제: 지뢰찾기
, 도장_ 관리자님이 작성char가 1바이트라서 그렇습니다. 1칸에 1문자만 저장됩니다.
memset으로 초기화하지 않으면 쓰레기 값이 들어가 있습니다.
다만, 명확하게 코드에서 100바이트를 할당하고 100바이트를 쓰는 게 확실하다면 memset으로 초기화하지 않아도 문제가 되지 않을 수 있습니다.
100바이트 중에 60바이트만 쓰고 40바이트를 쓰지 않는 경우가 발생한다면 40바이트에는 쓰레기 값이 들어가게 됩니다. 이런 경우에는 문제가 될 수 있습니다.
초기화를 하지 않았을 때 문제가 될 수도 있고, 안 될 수도 있게 됩니다. 가능하면 초기화를 반드시 하는 게 좋습니다.
수많은 소프트웨어 버그는 안일한 가정을 하는 데서 발생합니다. 방어적인 코드를 작성하는 게 좋습니다.