오류, 버그, 질문 - 페이지 2488 1...248124822483248424852486248724882489249024912492249324942495...3184 새 코멘트 Igor Makanu 2019.06.21 03:21 #24871 물론 내가 틀릴 수도 있지만 2개월 전에 내 템플릿이 작동했고 이제 CList 소멸자가 호출될 때 파괴되지 않은 개체 가 메모리에 남아 있는 것 같습니다. 코드: #property strict #include <Arrays\List.mqh> //+------------------------------------------------------------------+ class CData : public CObject { public : int x; double y; CData(){}; CData( int ival, double dval){x=ival;y=dval;} }; //+------------------------------------------------------------------+ template < typename T> class CDataBase { private : CList *mlist; T *Tptr; public : void CDataBase() { mlist= new CList; } void ~CDataBase( void ) { delete mlist; } int ArraySize ( void ) { return (mlist.Total()); } T * operator []( int index) { return (mlist.GetNodeAtIndex(index)); } void AddValue (T &value) { Tptr = new T; Tptr = value; mlist.Add(Tptr); } string TypeName() { return ( typename (T)); } }; //+------------------------------------------------------------------+ void OnStart () { CDataBase<CData>*data= new CDataBase<CData>; int i; for (i= 0 ; i< 5 ; i++) { data.AddValue( new CData(i,i* 2.0 )); } for (i= 0 ; i<data. ArraySize (); i++) { Print (i, " : " ,data[i].x, " , " ,data[i].y); } Print (data.TypeName()); delete data; } //+------------------------------------------------------------------+ 2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 0 : 0 , 0.0 2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 1:1, 2.0 2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 2:2, 4.0 2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 3:3, 6.0 2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 4:4, 8.0 2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 씨데이터 2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 5개의 삭제되지 않은 개체가 남음 2019.06.21 07:19:45.926 tstlist (EURUSD,H1) CData 유형의 객체 5개 남음 2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 280바이트의 메모리 누수 MT5 빌드 2085 Errors, bugs, questions Any questions from newcomers MQL4 및 MQL5에 대한 fxsaber 2019.06.21 09:18 #24872 Igor Makanu : 물론 내가 틀릴 수도 있지만 2개월 전에 내 템플릿이 작동했고 이제 CList 소멸자가 호출될 때 파괴되지 않은 개체 가 메모리에 남아 있는 것 같습니다. 코드: #property strict #include <Arrays\List.mqh> //+------------------------------------------------------------------+ class CData : public CObject { public : int x; double y; CData(){}; CData( int ival, double dval){x=ival;y=dval;} }; //+------------------------------------------------------------------+ template < typename T> class CDataBase { private : CList *mlist; T Tptr; public : void CDataBase() { mlist= new CList; } void ~CDataBase( void ) { delete mlist; } int ArraySize ( void ) { return (mlist.Total()); } T operator []( int index) { return (mlist.GetNodeAtIndex(index)); } void AddValue (T &value) { Tptr = value; mlist.Add(Tptr); } string TypeName() { return ( typename (T)); } }; //+------------------------------------------------------------------+ void OnStart () { CDataBase<CData*>* data= new CDataBase<CData*>; int i; for (i= 0 ; i< 5 ; i++) { CData* Tmp = new CData(i,i* 2.0 ); data.AddValue(Tmp); } for (i= 0 ; i<data. ArraySize (); i++) { Print (i, " : " ,data[i].x, " , " ,data[i].y); } Print (data.TypeName()); delete data; } //+------------------------------------------------------------------+ Igor Makanu 2019.06.21 10:03 #24873 fxsaber : 예, 아마도 맞을 것입니다. 귀하의 예제는 올바르게 작동합니다. 어딘가에서 내 소스의 테스트 케이스를 혼합했습니다. 고맙습니다! Vladimir Pastushak 2019.06.23 10:08 #24874 Вероника Сорокина : 안녕하세요. 그런 상황. mql4에서 작성한 어드바이저/스크립트/인디케이터/뭔가가 차트가 있는 창에 묶이지 않고 프로그램에 연결되어야 하는 것이 매우 필요합니다. 서비스(MT5에서)와 비슷하지만 MT4에서 필요합니다. 서비스 이용 fxsaber 2019.06.24 14:32 #24875 ME에서 터미널의 즐겨찾기에 현재 코드를 추가할 수 있습니까? 사실, 현재 작성 및 테스트 중인 코드를 추가할 수 있는 별도의 "디버그" 탭을 갖고 싶습니다. 이제 편리한 작업을 위해 현재 프로젝트 와 관련이없는 모든 것이 누락 된 별도의 터미널을 시작해야한다는 것이 밝혀졌습니다. 그러면 디버깅이 훨씬 빨라집니다. 터미널 자체의 다른 코드에서 리플이 발생하지 않습니다. [삭제] 2019.06.28 08:40 #24876 친애하는 개발자. 표시기 버퍼의 자동 재매핑이 정상인지 확인하십시오. 다시 파티션한다는 것은 다음을 의미합니다. 버퍼 크기 + rate_total은 크기가 6439일 때 5000으로 재설정됩니다. 창의 막대 = 10000. 재설정은 11439에서 발생합니다. 이 때문에 표시기가 충돌하고 잘못된 데이터를 표시할 수 있습니다. 빌드 2085. 2000년대 빌드의 어딘가에서 이 동작을 발견했습니다. Slava 2019.06.28 13:58 #24877 Alexey Kozitsyn : 친애하는 개발자. 표시기 버퍼의 자동 재매핑이 정상인지 확인하십시오. 다시 파티션한다는 것은 다음을 의미합니다. 버퍼 크기 + rate_total은 크기가 6439일 때 5000으로 재설정됩니다. 창의 막대 = 10000. 재설정은 11439에서 발생합니다. 이 때문에 표시기가 충돌하고 잘못된 데이터를 표시할 수 있습니다. 빌드 2085. 2000년대 빌드의 어딘가에서 이 동작을 발견했습니다. 상위 5위 안에 드는 이러한 행동은 원래 있었습니다. 버퍼 재할당으로 인한 표시기 충돌의 예를 제시하십시오. [삭제] 2019.06.28 16:41 #24878 Slava : 상위 5위 안에 드는 이러한 행동은 원래 있었습니다. 버퍼 재할당으로 인한 표시기 충돌의 예를 제시하십시오. 저것들. 표준보다 높은 1439개의 막대가 누적되면 터미널 FORCED가 버퍼 크기를 max 값으로 재설정한다는 것을 확인합니다. 창에 막대? 예인 경우 문서에 지정해야 합니다. 왜냐하면 이것은 예기치 않은 동작입니다. 예에 관해서. 막대 번호와 함께 작동하는 사용자 정의 개발을 의미합니다. 저것들. 막대 번호 6438을 기억하고 2분(TF M1) 후 버퍼가 재분배되고 어레이가 한계를 벗어났습니다. 이제 이것이 "표준" 동작이라는 것이 분명합니다. 문서를 업데이트하십시오. A100 2019.06.29 15:08 #24879 실행 중 오류: class A { public : virtual void f( int = 0 ) { Print ( 1 ); } }; class B : public A { public : virtual void f( int ) { Print( 2 ); } }; void OnStart () { B b; b.f(); } 결과 : 1 예상: 2 또는 (C++에서와 같이) - 컴파일 오류 Slava 2019.06.29 16:13 #24880 Alexey Kozitsyn : 문서를 업데이트하십시오. 문서는 어디에서 업데이트해야 합니까? 막대의 명확한 식별자는 항상 숫자가 아니라 막대의 시간이었습니다. 차트에서 누군가 ChartSetSymbolPeriod라고 부르는 경우 막대 수의 변화를 쉽게 포착할 수 있습니다. 놀라다? 그건 그렇고, OnCalculate에는 이러한 매개변수 rate_total이 있습니다. 1...248124822483248424852486248724882489249024912492249324942495...3184 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
물론 내가 틀릴 수도 있지만 2개월 전에 내 템플릿이 작동했고 이제 CList 소멸자가 호출될 때 파괴되지 않은 개체 가 메모리에 남아 있는 것 같습니다. 코드:
2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 0 : 0 , 0.0
2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 1:1, 2.0
2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 2:2, 4.0
2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 3:3, 6.0
2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 4:4, 8.0
2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 씨데이터
2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 5개의 삭제되지 않은 개체가 남음
2019.06.21 07:19:45.926 tstlist (EURUSD,H1) CData 유형의 객체 5개 남음
2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 280바이트의 메모리 누수
물론 내가 틀릴 수도 있지만 2개월 전에 내 템플릿이 작동했고 이제 CList 소멸자가 호출될 때 파괴되지 않은 개체 가 메모리에 남아 있는 것 같습니다. 코드:
예, 아마도 맞을 것입니다. 귀하의 예제는 올바르게 작동합니다. 어딘가에서 내 소스의 테스트 케이스를 혼합했습니다.
고맙습니다!
안녕하세요. 그런 상황. mql4에서 작성한 어드바이저/스크립트/인디케이터/뭔가가 차트가 있는 창에 묶이지 않고 프로그램에 연결되어야 하는 것이 매우 필요합니다. 서비스(MT5에서)와 비슷하지만 MT4에서 필요합니다.
서비스 이용
ME에서 터미널의 즐겨찾기에 현재 코드를 추가할 수 있습니까?
사실, 현재 작성 및 테스트 중인 코드를 추가할 수 있는 별도의 "디버그" 탭을 갖고 싶습니다.
이제 편리한 작업을 위해 현재 프로젝트 와 관련이없는 모든 것이 누락 된 별도의 터미널을 시작해야한다는 것이 밝혀졌습니다.
그러면 디버깅이 훨씬 빨라집니다. 터미널 자체의 다른 코드에서 리플이 발생하지 않습니다.
친애하는 개발자. 표시기 버퍼의 자동 재매핑이 정상인지 확인하십시오. 다시 파티션한다는 것은 다음을 의미합니다. 버퍼 크기 + rate_total은 크기가 6439일 때 5000으로 재설정됩니다. 창의 막대 = 10000. 재설정은 11439에서 발생합니다.
이 때문에 표시기가 충돌하고 잘못된 데이터를 표시할 수 있습니다.
빌드 2085. 2000년대 빌드의 어딘가에서 이 동작을 발견했습니다.
친애하는 개발자. 표시기 버퍼의 자동 재매핑이 정상인지 확인하십시오. 다시 파티션한다는 것은 다음을 의미합니다. 버퍼 크기 + rate_total은 크기가 6439일 때 5000으로 재설정됩니다. 창의 막대 = 10000. 재설정은 11439에서 발생합니다.
이 때문에 표시기가 충돌하고 잘못된 데이터를 표시할 수 있습니다.
빌드 2085. 2000년대 빌드의 어딘가에서 이 동작을 발견했습니다.
상위 5위 안에 드는 이러한 행동은 원래 있었습니다.
버퍼 재할당으로 인한 표시기 충돌의 예를 제시하십시오.
상위 5위 안에 드는 이러한 행동은 원래 있었습니다.
버퍼 재할당으로 인한 표시기 충돌의 예를 제시하십시오.
저것들. 표준보다 높은 1439개의 막대가 누적되면 터미널 FORCED가 버퍼 크기를 max 값으로 재설정한다는 것을 확인합니다. 창에 막대? 예인 경우 문서에 지정해야 합니다. 왜냐하면 이것은 예기치 않은 동작입니다.
예에 관해서. 막대 번호와 함께 작동하는 사용자 정의 개발을 의미합니다. 저것들. 막대 번호 6438을 기억하고 2분(TF M1) 후 버퍼가 재분배되고 어레이가 한계를 벗어났습니다. 이제 이것이 "표준" 동작이라는 것이 분명합니다. 문서를 업데이트하십시오.
실행 중 오류:
결과 : 1
예상: 2 또는 (C++에서와 같이) - 컴파일 오류
문서를 업데이트하십시오.
문서는 어디에서 업데이트해야 합니까?
막대의 명확한 식별자는 항상 숫자가 아니라 막대의 시간이었습니다.
차트에서 누군가 ChartSetSymbolPeriod라고 부르는 경우 막대 수의 변화를 쉽게 포착할 수 있습니다. 놀라다?
그건 그렇고, OnCalculate에는 이러한 매개변수 rate_total이 있습니다.