문제

변수를 생성하고 초기화하지 않으면 일부 (임의) 숫자가 호출됩니다. 쓰레기 가치 그것에 할당됩니다.

  • 이 값은 변수에 어떻게 할당됩니까?
  • 이 배후의 전체 개념/메커니즘은 무엇입니까?
  • 이것은 C에서만 발생합니까?
도움이 되었습니까?

해결책

쓰레기 가치는 아닙니다 할당된, 오히려 가치는 이미 있습니다. 변수를 할당 할 때 메모리에 예약을 할 수 있습니다. 메모리에 예약 할 때까지 메모리에는 이전에 "임의의"정보가 포함되어있을 것입니다.

은유로서, 땅을 구입하는 것과 같은 변수를 할당하는 것을 생각하십시오. 집을 짓는 것과 같이 무언가를 할 때까지 땅은 이미 앉아있는 쓰레기가 이미 앉아 있던 집과 같은 집과 같은 것을 가지고 있습니다.

일부 언어는 새로 할당 된 변수를 0으로 자동으로 채우므로 시간이 걸립니다. C와 같은 "Do-it-Yourself"언어 에서이 추가 행동은 보증되지 않습니다 (일부 시스템에서는 언어에 관계없이 메모리가 지워집니다. 예를 들어 보안 측정).

다른 팁

응용 프로그램의 다양한 지점에서 메모리가 사용 및 재사용됩니다. 예를 들어, 애플리케이션의 통화 스택이 커지고 수축함에 따라 메모리의 동일한 위치가 여러 번 덮어 쓸 수 있습니다. 기억해야 할 것은 메모리 조각이 버려지기 때문에 제로화되지 않기 때문에 다시 사용할 때 메모리에 새로운 초기 값을 지정하지 않으면 오래된 "쓰레기"값을 얻게됩니다.

약간 언어 그리고 구조 구현 기본-초기 메모리를 사용하여 사용합니다. 다른 사람들은 그렇지 않으므로 언어의 문서를 신중하게 읽어야 할 사항을 알 수 있습니다.

아무도 명시 적으로 획득 값을 할당하지 않습니다. 변수를 작성하는 경우 변수의 위치만이 값이 아닌 결정됩니다. 그것이 우리가 그것을 초기화하는 이유입니다. 쓰레기 가치는 이전 프로세스에 의해 동일한 메모리에 대한 이전 작업에서 나올 수 있습니다! 그래서 그것은 무엇이든 할 수 있습니다. 나는 그것이 꽤 많은 수의 언어를 가지고 있다고 생각합니다. 목록에 대해 잘 모르겠습니다! :)

변수를 생성하고 초기화하지 않으면 아무 일도 일어나지 않습니다. 해당 변수에서 값을 읽으면 변수가 현재 위치한 메모리에서 데이터를 얻습니다. 변수이기 때문에 쓰레기/임의 값처럼 보일 수 있습니다. 어느 정도의 무작위로 메모리에 배치됩니다.

C 표준은 다음과 같습니다.

구현 : 구현에 대한 자세한 시험 : https://stackoverflow.com/a/36725211/895245 요약:

  • 로컬 : 주소는 결코 작성되지 않았으므로 이전에 무엇이든 사용되었습니다.
  • 글로벌 : .bss
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top