큰 응용 프로그램에 아주 이상한 문제가 있습니다. 나는 그들에 커스텀 객체를 저장하는 TObjectList를 많이 사용한다. 커다란 목록에서 나는 "CLEAR"방법을 사용할 때 "주소의 액세스 위반 .. 주소 읽기" "권한있는 명령"등으로 이상한 충돌을 경험했습니다. 목록에서 마지막 항목을 삭제하려고 시도 할 때이를 정확히 추적했습니다. 내가 포함 된 개체 삭제 그들의 proc 파괴에서 로깅하고 또한 자신에 대한 삭제하려고 시도 : (olist.count-1 downto 0 do .. debugmsg ('삭제'+ inttostr (a)) .. olist.delete (a)), 목록에서 마지막으로 남은 항목을 삭제할 때 두 가지 방법으로 액세스 위반이 발생합니다.TObjectList.Clear access violation
이것은 항상 발생합니다. 다른 영역에서도 명확하게 사용하고 일부 다른 (더 작은) 목록을 사용하기 때문에 발생합니다.하지만 앱의 특정 시점에 이런 일이 발생합니다.
나는 무엇이 잘못 될지 전혀 모른다. 명확하지 않은 동안 목록에 액세스하려고 시도하는 것이 아무것도 없다. cointained 개체는 부모 개체 목록에 액세스 할 수 없다. TObjectList.delete에 뭔가가있다./마지막 항목 지우기에 관해서는 명확한 방법.
제안 사항? Delphi XE 사용.
다른 곳에서 발생하는 메모리 손상과 모양이 비슷합니다. –
TObjectList에는 'OwnsObjects' 속성이 있습니다. 그것은 진실인가 거짓인가? TObjectList를 사용하는 코드는 실제로 어떤 모양입니까? –
@Remy : "스스로 삭제하려고 시도하는 중"이라는 비트에서 "OwnsObjects"가 "true"로 설정되어 있다는 것은 명백합니다. –