저는 Delphi를 처음 접했고 기본적으로 어떤 개체 변수와 스택 변수가 초기화되는지 확인하기 위해 몇 가지 테스트를 실행했습니다.
TInstanceVariables = class
fBoolean: boolean; // always starts off as false
fInteger: integer; // always starts off as zero
fObject: TObject; // always starts off as nil
end;
이것은 내가 다른 언어에서 익숙한 행동이지만 Delphi에서 의존하는 것이 안전한지 궁금합니다. 예를 들어 컴파일러 설정에 따라 달라지는 지 아니면 다른 컴퓨터에서 다르게 작동하는지 궁금합니다. 객체의 기본 초기화 값에 의존하는 것이 정상입니까, 아니면 생성자에서 모든 인스턴스 변수를 명시 적으로 설정합니까?
스택 (프로 시저 수준) 변수의 경우, 내 테스트에서 단위 화 된 부울이 참이고 단위 화 된 정수가 2129993264이며 초기화되지 않은 객체는 잘못된 포인터 (즉 nil이 아님)임을 보여줍니다. 나는 그것들에 접근하기 전에 항상 프로 시저 수준의 변수를 설정하는 것이 규범이라고 생각한다.