새로운 MQL4 구문

 

베타가 출시된지 꽤 되었는데, 1월 중순에 정식 출시가 될 것이라는 메모를 어디선가 발견했습니다. 나는 그것이 일어날 것이라고 의심하지만 아마도 소수의 코더는 베타에서 배운 아이디어와 문제를 공유하는 데 관심을 가질 것입니다.

새로운 MQL4 소스 구문, 편집기, 컴파일러, 패턴, OOP 또는 이와 관련된 모든 것에 대한 토론을 시작하는 것이 이미 의미가 있습니까?

이 주제에 대해서는 버그 보고, 외침, 건설적인 토론만 하지 마십시오.

 

나는 #include 지시문이 반복되면 무시된다는 것을 밝혔습니다.

int OnStart() {
#include < dummy.mqh >
#include < dummy.mqh >
#include < dummy.mqh >
#include < dummy.mqh >
}

와 동일하게 작동

 int OnStart () {
#include <dummy.mqh>
}

별도의 파일에 클래스 선언이 있는 경우 매우 환영할만한 동작이지만 도움말 파일에는 언급되지 않습니다.

 

새 버전은 조금 더 빠른 것 같습니다.

시리즈로 설정된 동적 어레이는 자동으로 이동하는 것으로 보입니다.

기능 오버로딩은 스위치보다 더 나은 인터페이스를 제공합니다.

 
"메모리 누수" 원인을 찾는 방법에 대한 힌트를 주시면 감사하겠습니다. 좋은 습관이 있습니까?
 
Ovo : "메모리 누수" 원인을 찾는 방법에 대한 힌트를 주시면 감사하겠습니다. 좋은 습관이 있습니까?
"동적으로 할당된 메모리 삭제"와 같은 일반적인 프로그래밍 질문을 하고 있습니까? || "재귀 함수 사용 제한". 아니면 베타 내의 메모리 누수 버그를 말씀하시는 건가요?
 
ubzen :
"동적으로 할당된 메모리 삭제"와 같은 일반적인 프로그래밍 질문을 하고 있습니까? || "재귀 함수 사용 제한". 아니면 베타 내의 메모리 누수 버그를 말씀하시는 건가요?


확실히 전자입니다. 내 배경이 JAVA에서 왔기 때문에 사용하지 않는 개체 참조를 처리한 경험이 없습니다. 즉, 일반 경고 메시지(이러한 힌트가 있는 경우)를 받은 후 누출된 개체를 찾기 위한 힌트를 주셔서 감사합니다. 지금은 경고가 출력하는 바이트 수에서 유출된 개체의 클래스를 식별하려고 합니다.

 
Ovo : 전자입니다. 내 배경이 JAVA에서 왔기 때문에 사용하지 않는 개체 참조를 처리한 경험이 없습니다. 즉, 일반 경고 메시지(이러한 힌트가 있는 경우)를 받은 후 누출된 개체를 찾기 위한 힌트를 주셔서 감사합니다. 지금은 경고가 출력하는 바이트 수에서 유출된 개체의 클래스를 식별하려고 합니다.

mt5에 비해 불완전합니다. 클래스 이름을 나타내는 또 다른 줄이 있어야 합니다. 바라건대 그들이 이것을 곧 추가할 것입니다.

 

글쎄요, 리크 헌팅이 정말 짜증나더군요... 생각보다.

도구를 만드는 데 약간의 노력을 기울였지만 전혀 성공하지 못했습니다. new/delete 문을 재정의할 수 있다는 것을 알게 되었지만 대신할 수 있는 것이 없다는 것을 깨달았습니다. 괄호가 있는 함수 라면 매우 간단하지만 불행히도 명령문입니다. 나는 그것들을 등록하기 위해 new/delete 문 주위에 래퍼를 만들 수 있지만 미래가 없는 매우 고통스러운 솔루션이 될 것입니다.

누출 원인을 감지하는 방법에 대한 경험이 있는 사람이 있으면 메모를 남겨주세요.

 
오보:

글쎄요, 리크 헌팅이 정말 짜증나더군요... 생각보다.

도구를 만드는 데 약간의 노력을 기울였지만 전혀 성공하지 못했습니다. new/delete 문을 재정의할 수 있다는 것을 알게 되었지만 대신할 수 있는 것이 없다는 것을 깨달았습니다. 괄호가 있는 함수라면 매우 간단하지만 불행히도 명령문입니다. 나는 그것들을 등록하기 위해 new/delete 문 주위에 래퍼를 만들 수 있지만 미래가 없는 매우 고통스러운 솔루션이 될 것입니다.

누출 원인을 감지하는 방법에 대해 경험이 있는 사람이 있으면 메모를 남겨주세요.

아마도 다음 기사(mql5의 경우이지만 새 mql4에도 동일하게 적용됨)가 솔루션을 찾는 데 도움이 될 수 있습니다.

MQL5의 객체 생성 및 소멸 순서

MQL5에서 객체 포인터 사용하기
 
angevoyageur :

아마도 다음 기사(mql5의 경우이지만 새 mql4에도 동일하게 적용됨)가 솔루션을 찾는 데 도움이 될 수 있습니다.

MQL5의 객체 생성 및 소멸 순서

MQL5에서 객체 포인터 사용하기



메모해 주셔서 감사합니다.

불행히도 누출을 치료하는 데 도움이 되지 않는 것 같으며 누출이 발생하는 이유만 설명합니다.

지금까지 내가 사용한 유일한 솔루션은 내가 만드는 모든 코드에 대해 단위 테스트를 코딩하고 개발 중에 자주 단위 테스트를 실행하는 것입니다. 따라서 누출이 나타나면 누출을 일으킨 테스트 케이스를 격리하려고 할 수 있습니다. 그러나 일부 테스트는 매우 복잡하여 목적에 맞는 쉬운 솔루션이 아닙니다. 그리고 편집자는 정말 고통스럽습니다.

 

새 구문을 구별하는 방법은 무엇입니까?

"예정된" 구문과 "원래" 구문을 참조하기 위해 다른 단어가 필요하다고 생각합니다. MQ가 공식 명칭은 신경 쓰지 않고 계속 호환되는 척 하는 것 같다.

그래서 우리 스스로 적절한 이름을 찾아야 할 것 같습니다. 어떤 제안? MQL4 V2, OMQL4(즉, 객체-), MQL4.1 ...?