MQL5의 OOP에 대한 질문 - 페이지 10

 
Vasiliy Sokolov :

...MQL에서 어떤 변종을 사용하는지 알 수 없습니다...

MKL에는 가비지 수집기가 없습니다.
 
Vasiliy Sokolov :

안녕하세요. 컴퓨터 메모리는 스택 컨텍스트에서 사용하든 힙 컨텍스트에서 사용하든 동일한 성능을 갖습니다 . 동적 메모리 자체의 관리는 가비지 수집기의 구현에 따라 다릅니다. 예를 들어 Python(저속 버전)과 같은 참조 카운팅 또는 백그라운드 프로세스(Net CLR)에서 실행 그래프를 우회하여 객체 생성 에포크 분석이 될 수 있습니다. MQL에서 어떤 변형이 사용되는지는 알려져 있지 않지만, 우리는 그것의 극도의 효율성을 가정할 수 있습니다. MQL5 사용자는 삭제 연산자에 직접 액세스할 수 있으므로 GC 자체의 작업이 크게 간소화됩니다. 이와 관련하여 new 를 사용할 때 오버헤드에 대한 우려는 헛된 것입니다. 동적 메모리를 자유롭게 사용하십시오.

"스택 오버플로"는 복잡한 재귀를 사용하거나 재귀 알고리즘에 오류가 있는 경우에만 현대 시스템에서 이 경우를 충족할 수 있습니다. 최신 프로그램은 동적 페이지 로딩과 함께 가상 주소 공간에서 항상 보호된 OC 모드로 실행되므로 걱정하지 마십시오. 스택이 끝나지 않습니다. :)

거짓 진술.

 
Dmitry Fedoseev :
MKL에는 가비지 수집기가 없습니다.

정보는 어디에서 왔습니까? MT4/MT5는 무엇에 쓰여 있습니까? - 정보가 있습니까?

;)

추신: 자유롭게 사용할 수 있는 최대값은 Metaquot의 공석입니다. 프로그래머 지원자를 위한 서면 요구 사항이 있습니다.)

 
Igor Makanu :

정보는 어디에서 왔습니까? MT4/MT5는 무엇에 쓰여 있습니까? - 정보가 있습니까?

;)

추신: 자유롭게 사용할 수 있는 최대값은 Metaquot의 공석입니다. 프로그래머 지원자를 위한 서면 요구 사항이 있습니다.)

그것이 쓰여진 것과 무슨 차이가 있습니까? mql에서 new로 생성된 객체는 자체적으로 삭제되지 않습니다. 그건 그렇고, C++에서도))

 
Dmitry Fedoseev :
MKL에는 가비지 수집기가 없습니다.

드미트리, 당신이 틀렸습니다. MetaTrader에 여전히 가비지 수집기가 있는 세 가지 이유는 다음과 같습니다.

  1. MQL5는 new 없이 생성된 객체를 자동으로 완전히 삭제합니다. 이러한 개체에 대한 포인터는 AUTOMATIC 유형입니다. 성령이나 가비지 수집가가 자동으로 삭제할 수 있습니다.
  2. 개발자들은 MQL5 프로그램이 내부 MetaTrader 가상 머신 에 의해 실행된다고 한 번 이상 언급했습니다. 가상 머신이 있으므로 가비지 수집기가 있어야 합니다.
  3. 동적 개체가 사용자에 의해 제대로 삭제되지 않으면 MetaTrader는 삭제되지 않은 개체의 수와 개체를 나타내는 '메모리 누출' 메시지로 이를 나타냅니다. 저것들. MetaTrader는 할당된 금액과 할당량을 완벽하게 잘 알고 있습니다. 메모리 작업을 제어하는 특정 시스템이 병렬로 작동하고 있음이 분명합니다. 이것이 가비지 수집기입니다.
 
Dmitry Fedoseev :

거짓 진술.

Z.Y. 일반적으로 당신은 몇 년 동안 많이 변했습니다. 어쩐지 그는 화를 냈다. 이전에는 많은 건설적인 제안을 기억합니다. 이제 당신은 무의미한 논쟁 / 부인 / 폭로와 같은 일종의 싸움에 끊임없이 빠져들고 있습니다. 이 모든 것이 무엇을 위한 것입니까? 더 세게 치려면? -내가 직접 당신에게 돌을 가져올 것입니다 : 당신이 좋아하는대로 치십시오. 그러나 나는 당신에게 똑같이 미안합니다.

 
Vasiliy Sokolov :

드미트리, 당신이 틀렸습니다. MetaTrader에 여전히 가비지 수집기가 있는 세 가지 이유는 다음과 같습니다.

  1. MQL5는 new 없이 생성된 객체를 자동으로 완전히 삭제합니다. 이러한 개체에 대한 포인터는 AUTOMATIC 유형입니다. 성령이나 가비지 수집가가 자동으로 삭제할 수 있습니다.
  2. 개발자들은 MQL5 프로그램이 내부 MetaTrader 가상 머신 에 의해 실행된다고 한 번 이상 언급했습니다. 가상 머신이 있으므로 가비지 수집기가 있어야 합니다.
  3. 동적 개체가 사용자에 의해 제대로 삭제되지 않으면 MetaTrader는 삭제되지 않은 개체의 수와 개체를 나타내는 '메모리 누출' 메시지로 이를 나타냅니다. 저것들. MetaTrader는 할당된 금액과 할당량을 완벽하게 잘 알고 있습니다. 메모리 작업을 제어하는 특정 시스템이 병렬로 작동하고 있음이 분명합니다. 이것이 가비지 수집기입니다.

1. 성령도 아니고 쓰레기 수집가도 아닙니다.

2.3. 당신은 끝없이 환상을 가질 수 있습니다.

 
Vasiliy Sokolov :

Z.Y. 일반적으로 당신은 몇 년 동안 많이 변했습니다. 어쩐지 그는 화를 냈다. 이전에는 많은 건설적인 제안을 기억합니다. 이제 당신은 무의미한 논쟁 / 부인 / 폭로와 같은 일종의 싸움에 끊임없이 빠져들고 있습니다. 이 모든 것이 무엇을 위한 것입니까? 더 세게 치려면? -내가 직접 당신에게 돌을 가져올 것입니다 : 당신이 좋아하는대로 치십시오. 그러나 나는 당신에게 똑같이 미안합니다.

난 울고있어!

 
Dmitry Fedoseev :

1. 성령도 아니고 쓰레기 수집가도 아닙니다.

2.3. 당신은 끝없이 환상을 가질 수 있습니다.

우리는 문서를 읽습니다. new 연산자는 객체에 대한 포인터를 반환하지 않고 객체에 대한 핸들을 반환합니다. 나는 감히 모든 클래스가 프로그램이 최소화될 때 잊혀진 객체를 안전하게 죽이는 동시에 누수의 존재를 친절하게 나타내는 일종의 래퍼로 변한다고 제안합니다. 일반적으로 제작자가 이 메커니즘에 대해 언급하는 것이 좋습니다.
 
Vladimir Simakov :
우리는 문서를 읽습니다. new 연산자는 객체에 대한 포인터를 반환하지 않고 객체에 대한 핸들을 반환합니다. 나는 감히 모든 클래스가 프로그램이 최소화될 때 잊혀진 객체를 안전하게 죽이는 동시에 누수의 존재를 친절하게 나타내는 일종의 래퍼로 변한다고 제안합니다. 일반적으로 제작자가 이 메커니즘에 대해 언급하는 것이 좋습니다.

네, 메모리 누수에 대한 메시지를 삭제하고 작성합니다. 조언자를 작성하는 프로그래머가 삶에 지루해하지 않도록 하기 위해서입니다.

어제는 메모리 누수가 있었는데, 오늘은 원칙적으로 존재할 수 없다는 것이 어떻게 밝혀졌는지 궁금합니다.

그리고 새에 대해 말하면 설명자는 포인터이기도 합니다. 그리고 그 단어 자체에서 설명자, 포인터, 식별자 등 아무 것도 변경되지 않습니다.