LocalVar_TestScript_2.mq5 ilk kez çalıştırıldığında, yalnızca
PO 0 LocalVar_TestScript_2 (EURGBP,M1) 12:08:19 CItem::CItem Constructor LD 0 LocalVar_TestScript_2 (EURGBP,M1) 12:08:19 CItem::CItem Constructor HJ 0 LocalVar_TestScript_2 (EURGBP,M1) 12:08:19 CItem::CItem Constructor DS 0 LocalVar_TestScript_2 (EURGBP,M1) 12:08:19 CItem::CItem Constructor PH 0 LocalVar_TestScript_2 (EURGBP,M1) 12:08:19 CItem::CItem Constructor GP 0 LocalVar_TestScript_2 (EURGBP,M1) 12:08:19 CItem::~CItem Destructor KF 0 LocalVar_TestScript_2 (EURGBP,M1) 12:08:19 CItem::~CItem Destructor OM 0 LocalVar_TestScript_2 (EURGBP,M1) 12:08:19 CItem::~CItem Destructor CD 0 LocalVar_TestScript_2 (EURGBP,M1) 12:08:19 CItem::~CItem Destructor GK 0 LocalVar_TestScript_2 (EURGBP,M1) 12:08:19 CItem::~CItem Destructor
yani"geçersiz işaretçiyi sil" mesajı olmadan.Aynı dosyayı yeniden derledikten sonra (yani ikinci derlemeden sonra), bunu gösteriyor:
PQ 0 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 CItem::CItem Constructor LH 0 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 CItem::CItem Constructor HO 0 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 CItem::CItem Constructor DF 0 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 CItem::CItem Constructor PL 0 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 CItem::CItem Constructor GR 0 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 CItem::~CItem Destructor KK 0 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 CItem::~CItem Destructor OP 0 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 CItem::~CItem Destructor CF 0 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 CItem::~CItem Destructor GO 0 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 CItem::~CItem Destructor PH 1 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 敤敬整渠湯搠湹浡捩漠橢捥t RP 1 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 敤敬整渠湯搠湹浡捩漠橢捥t DH 1 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 敤敬整渠湯搠湹浡捩漠橢捥t FP 1 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 敤敬整渠湯搠湹浡捩漠橢捥t HH 1 LocalVar_TestScript_2 (EURUSD,H1) 12:09:12 敤敬整渠湯搠湹浡捩漠橢捥tMakalenin yayınlanmasından bu yana terminalin geçersiz işaretçileri silmeye yönelik tepkisi değişti mi? XP, 32
LocalVar_TestScript_2.mq5 ilk kez çalıştırıldığında, yalnızca
yani"geçersiz işaretçiyi sil" mesajı olmadan.Aynı dosyayı yeniden derledikten sonra (yani ikinci derlemeden sonra), bunu gösteriyor:
Makalenin yayınlanmasından bu yana terminalin geçersiz işaretçileri silmeye yönelik tepkisi değişti mi? XP, 32mql5:
Спасибо за сообщение. Исправлено. Поведение изменилось, теперь сообщение "delete invalid pointer" выдаётся только при компиляции под отладку.
Neden bu satır kurucunun çalışmasına neden oluyor?
CItem* array1[5];
ve bu çalışmıyor:
CObjectC *pObjectC;?

- www.mql5.com
Neden bu satır kurucunun çağrılmasına neden oluyor:
Ve neden bu satır kurucunun çalışmasına neden olur: CItem* array1[5];,
ancak bu değil: CObjectC *pObjectC; ?
Anladığım kadarıyla
CItem* array1[5];
tek başına kurucunun başlatılmasına neden olmaz. İşte makaleden daha eksiksiz bir kod:
void OnStart() { //--- nesnenin ilk işaretçi dizisini bildirir CItem* array1[5]; //--- nesnenin ikinci işaretçi dizisini bildirir CItem* array2[5]; //--- şimdi döngüdeki dizileri dolduralım for(int i=0;i<5;i++) { //--- ilk dizi için işaretçi new operatörü tarafından oluşturulacaktır array1[i]=new CItem; //--- ikinci dizinin işaretçisi ilk diziden kopyalanacaktır array2[i]=array1[i]; }Yapıcı, ilk işaretçi dizisi bildirilirken değil, bu dizi new operatörü kullanılarak bir döngü içinde doldurulurken çağrılır.
New operatörü sadece sınıfı dinamik hale getirmek için mi gereklidir? Ama eğer dinamik bir dizi "ilk köşeli parantez çiftinde belirtilmemiş bir değer olan bir dizi" ise, dinamik bir sınıf nedir?
Ancak yine de sorular var:
New operatörü ile dinamik bir nesne oluşturmanın amacı nedir?
Otomatik olarak bir nesne oluştururken, sınıf nesnesi yığında oluşturulur, yürütme süresine göre dinamik nesneden daha hızlıdır.
Dinamik olarak bir nesne oluştururken, OS bellek yöneticisi kullanılırken sınıf nesnesi bellekte (yığında) oluşturulur, işlem daha yavaştır.
İşte bir soru: otomatik oluşturma daha hızlıysa, neden dinamik nesneler oluşturulur? Yığının taşmasını önlemek için mi?

- 2010.02.25
- MetaQuotes Software Corp.
- www.mql5.com

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Yeni makale MQL5'te Nesne Yaratma ve Yok Etme yayınlandı:
İster özel bir nesne, ister dinamik bir dizi veya bir nesne dizisi olsun, her nesne MQL5 programında kendine özgü şekilde oluşturulur ve silinir. Çoğu zaman, bazı nesneler diğer nesnelerin bir parçasıdır ve sonlandırma sırasında nesne silme sırası özellikle önemli hale gelir. Bu makale, nesnelerle çalışma mekanizmalarını kapsayan bazı örnekler sunmaktadır.
MQL5 programları, Nesne Yönelimli Programlama (OOP) kavramlarıyla yazılmıştır ve bu, yalnızca özel kitaplıklar oluşturmak için yeni olanaklar açmakla kalmaz, aynı zamanda diğer geliştiricilerin eksiksiz ve test edilmiş sınıflarını kullanabilmenizi de sağlar. MetaTrader 5 Müşteri Terminali'nin içerdiği Standart Kitaplıkta, binlerce yöntemi içeren yüzlerce sınıf vardır.
OOP'nin tüm avantajlarından yararlanmak için MQL5 programlarında nesne oluşturma ve silme ile ilgili bazı ayrıntıları netleştirmemiz gerekir. Nesne Oluşturma ve Silme, Belgeler bölümünde kısaca açıklanmıştır ve bu makale bu konuyu örneklerle açıklayacaktır.Yazar: MetaQuotes