오류, 버그, 질문 - 페이지 1637 1...163016311632163316341635163616371638163916401641164216431644...3184 새 코멘트 Sergey Dzyublik 2016.08.14 21:10 #16361 Slawa : 1. 다섯이나 네? 4개 정도 되는 것 같아요. 테스터 창을 확대하면 됩니다. 2. 응시 및 시험 ㅎㅎ 감사합니다 (mt4) 1366 x 768((화면의 1/3까지 확장해야 합니다. 투시 능력은 당신의 수준입니다. Sergey Dzyublik 2016.08.14 21:24 #16362 A100 : 더 간단한 예를 들어보자 공식적으로 질문에 접근하면 A( A& ) 형식의 호출이 몇 개입니까? 하나. 최소한 C++는 중간 객체를 생성하지 않습니다. 아마도 C++에서 RVO(반환 값 최적화)가 기본값입니까? Ilyas 2016.08.15 09:09 #16363 A100 : 1. 복사 생성자의 이중 호출 2. "leaked memory" 메시지 없음(삭제 없이 새로 추가됨) RVO 최적화(NRVO도 있음)에 대해 올바르게 언급되었습니다. 현재 MQL 컴파일러에는 없지만 향후에 추가될 예정입니다(현재로서는 이 최적화를 우선 순위가 아닌 작업으로 간주합니다). 재생산되지 않습니다. 재생산을 위해 중요한 세부 사항을 빠뜨렸을 수 있으므로 다시 확인하십시오. A100 2016.08.15 11:20 #16364 Ilyas : 2. 재생산할 수 없습니다. 재생산에 대한 중요한 세부 정보를 지정하지 않았을 수 있으므로 다시 확인하십시오. 단순화된 예 class A { public : A() { Print ( __FUNCTION__ ); } virtual ~A() { Print ( __FUNCTION__ ); } }; void OnStart () { new A(); } 결과: 2016.08.15 14:17:39.093 Script1 (GBPUSD,M15) A::A 결론: 소멸자가 호출되지 않고 동시에 메모리 누수 메시지가 없습니다(다음 예와 같이). //Script2.mq5 class A { public : A() { Print ( __FUNCTION__ ); } virtual ~A() { Print ( __FUNCTION__ ); } }; void OnStart () { A *a = new A(); } 결과: 2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 16바이트 메모리 유출 2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) A형 객체 1개 남음 2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 삭제되지 않은 개체 1개 남음 2016.08.15 14:26:27.992 Script2 (GBPUSD,M15) A::A Ilyas 2016.08.15 12:01 #16365 명확하게 해 주셔서 감사합니다. 재현됨 - 보고된 누출이 없으며 그 이유는 다음과 같습니다. 여기서 옵티마이저가 오버라이드했기 때문에 new operator 에서 생성된 메모리 또는 포인터 작업이 없는 경우 해당 메모리 할당이 제거되었습니다. 사용하지 않는 변수에 대한 포인터를 저장해도 새 작업의 삭제가 차단되지 않도록 최적화 프로그램의 이 "기능"을 수정하거나 개선할 가치가 있는지 여부를 고려할 것입니다. Dmitry Voronkov 2016.08.15 12:18 #16366 안녕하세요. 개발자 여러분, MQL4와 MQL5에는 Expert Advisor에서 인디케이터 서브윈도우를 삭제하는 기능이 있는데 인디케이터 창을 생성하는 기능은 없는 이유를 알려주세요. 템플릿을 사용하거나 창 표시기를 수동으로 실행해야 하므로 편리하지 않습니다. 그래프에 표시된 정보가 손실됩니다. 예, 리소스 파일에서 표시기를 실행하고 표시할 수 있기를 원합니다. 또는 정리하는 방법을 알려주세요. fxsaber 2016.08.15 12:20 #16367 Slawa : 그리고 "시각화로 인생 핵"을 마련한 것은 당신이 아니었나요? 이것이 버그라고 어떻게 결정하셨습니까? 폴더 이름은 연결이 발생한 포트 번호에 해당합니다. 나였어.... 고마워, 알았어. fxsaber 2016.08.15 12:21 #16368 나는 매크로를하고있다 #define MACROS(A) "##A##" MACROS(Num)를 "Num"으로 바꾸고 싶지만 항상 "##A##"로 나옵니다. 원하는 것을 얻기 위해 매크로를 정의할 수 있습니까? fxsaber 2016.08.15 12:24 #16369 작은 발견을 했다 void OnStart () { double dPrice = 1.08249 ; int iPrice = ( int )((dPrice / _Point ) + 0.1 ); double dNewPrice = iPrice * _Point ; // При этом нормализации это значение не требует в OrderSend if (dPrice != dNewPrice) Print (( string )(dPrice - dNewPrice)); } Integer * Point(정규화 없음)의 가격으로 주문을 개설한 후 개시가를 요청하면 정규화되지 않은 Integer * Point와 다릅니다. Integer * Point 형식의 비정규화된 가격이 항상 OrderSend에서 롤링되는 이유는 무엇입니까? Ilyas 2016.08.15 12:38 #16370 fxsaber : 매크로를 하고 있는데 MACROS(Num)를 "Num"으로 바꾸고 싶은데 항상 "##A##"로 나옵니다. 원하는 것을 얻기 위해 매크로를 정의할 수 있습니까? 매크로 본문에서 따옴표 제거 매크로 매개변수를 문자열로 변환하려면 #을 사용하십시오: #define MACROS(A) #A ##은 토큰을 접착하는 데 사용됩니다. 1...163016311632163316341635163616371638163916401641164216431644...3184 새 코멘트 사유: 취소 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
1. 다섯이나 네? 4개 정도 되는 것 같아요. 테스터 창을 확대하면 됩니다.
2. 응시 및 시험
ㅎㅎ 감사합니다 (mt4)
1366 x 768((화면의 1/3까지 확장해야 합니다.
투시 능력은 당신의 수준입니다.
더 간단한 예를 들어보자
공식적으로 질문에 접근하면 A( A& ) 형식의 호출이 몇 개입니까? 하나. 최소한 C++는 중간 객체를 생성하지 않습니다.
1. 복사 생성자의 이중 호출
2. "leaked memory" 메시지 없음(삭제 없이 새로 추가됨)
단순화된 예
결과:
2016.08.15 14:17:39.093 Script1 (GBPUSD,M15) A::A
결론: 소멸자가 호출되지 않고 동시에 메모리 누수 메시지가 없습니다(다음 예와 같이).
결과:
2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 16바이트 메모리 유출
2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) A형 객체 1개 남음
2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 삭제되지 않은 개체 1개 남음
2016.08.15 14:26:27.992 Script2 (GBPUSD,M15) A::A
여기서 옵티마이저가 오버라이드했기 때문에 new operator 에서 생성된 메모리 또는 포인터 작업이 없는 경우 해당 메모리 할당이 제거되었습니다.
사용하지 않는 변수에 대한 포인터를 저장해도 새 작업의 삭제가 차단되지 않도록 최적화 프로그램의 이 "기능"을 수정하거나 개선할 가치가 있는지 여부를 고려할 것입니다.
개발자 여러분, MQL4와 MQL5에는 Expert Advisor에서 인디케이터 서브윈도우를 삭제하는 기능이 있는데 인디케이터 창을 생성하는 기능은 없는 이유를 알려주세요.
템플릿을 사용하거나 창 표시기를 수동으로 실행해야 하므로 편리하지 않습니다. 그래프에 표시된 정보가 손실됩니다.
예, 리소스 파일에서 표시기를 실행하고 표시할 수 있기를 원합니다.
또는 정리하는 방법을 알려주세요.
그리고 "시각화로 인생 핵"을 마련한 것은 당신이 아니었나요?
이것이 버그라고 어떻게 결정하셨습니까? 폴더 이름은 연결이 발생한 포트 번호에 해당합니다.
작은 발견을 했다
Integer * Point(정규화 없음)의 가격으로 주문을 개설한 후 개시가를 요청하면 정규화되지 않은 Integer * Point와 다릅니다.
Integer * Point 형식의 비정규화된 가격이 항상 OrderSend에서 롤링되는 이유는 무엇입니까?
매크로 본문에서 따옴표 제거
매크로 매개변수를 문자열로 변환하려면 #을 사용하십시오:
#define MACROS(A) #A
##은 토큰을 접착하는 데 사용됩니다.