MQL5'te OOP hakkında sorular - sayfa 10

 
Vasiliy Sokolov :

...MQL'de hangi varyantın kullanıldığı bilinmiyor...

MKL'de çöp toplayıcı yoktur.
 
Vasiliy Sokolov :

Tünaydın. Bilgisayar belleği, yığın veya yığın bağlamında kullanılsa da aynı performansa sahiptir . Dinamik belleğin yönetimi, çöp toplayıcının uygulanmasına bağlıdır: örneğin, Python'daki gibi (daha yavaş sürüm) referans sayımı veya arka plan işleminde yürütme grafiğini atlayarak nesne oluşturma dönemlerinin analizi (Net CLR) olabilir. MQL'de hangi varyantın kullanıldığı bilinmiyor, ancak aşırı verimliliğini varsayabiliriz, çünkü MQL5 kullanıcısının doğrudan silme operatörüne erişimi vardır, bu da GC'nin çalışmasını büyük ölçüde basitleştirir. Bu bağlamda, yeni kullanırken ek yük'a ilişkin endişeleriniz boşuna - dinamik bellek kullanmaktan çekinmeyin.

"Yığın taşması"na gelince, bu duruma modern sistemlerde ancak karmaşık özyineleme kullanıldığında veya özyinelemeli algoritmada bir hata olduğunda rastlamak mümkündür. Modern bir program her zaman korumalı OC modunda, dinamik sayfa yükleme ile sanal bir adres alanında çalışır, bu nedenle endişelenmeyin: yığın bitmeyecek :)

Yanlış beyan.

 
Dmitry Fedoseev :
MKL'de çöp toplayıcı yoktur.

bilgi nereden? MT4/MT5 ne yazıyor? - bilgi var mı?

;)

Not: Ücretsiz olarak kullanılabilen maksimum miktar Metaquot'daki boş kontenjanlardır, programcı adayları için yazılı gereksinimler vardır;)

 
Igor Makanu :

bilgi nereden? MT4/MT5 ne yazıyor? - bilgi var mı?

;)

Not: Ücretsiz olarak kullanılabilen maksimum miktar Metaquot'daki boş kontenjanlardır, programcı adayları için yazılı gereksinimler vardır;)

Üzerinde ne yazdığı ne fark eder? Mql'de new ile oluşturulan nesneler kendileri silinmez. Bu arada, C++'da da))

 
Dmitry Fedoseev :
MKL'de çöp toplayıcı yoktur.

Dmitry, yanılıyorsun. İşte MetaTrader'ın hala bir çöp toplayıcıya sahip olmasının üç nedeni:

  1. MQL5, yenisi olmadan oluşturulan nesneleri otomatik olarak tamamen siler. Bu tür nesnelere yönelik işaretçiler AUTOMATIC türündedir. Ya Kutsal Ruh ya da çöp toplayıcı onları otomatik olarak silebilir.
  2. Geliştiriciler, MQL5 programının dahili MetaTrader sanal makinesi tarafından yürütüldüğünden birçok kez bahsetmiştir. Sanal makine olduğuna göre bir çöp toplayıcı olması gerekir.
  3. Dinamik bir nesne kullanıcı tarafından düzgün bir şekilde silinmezse, MetaTrader bunu kaç tane ve hangi nesnelerin silinmediğini gösteren bir 'sızdırılmış bellek' mesajı ile gösterecektir. Onlar. MetaTrader ne kadar ve neyin tahsis edildiğini çok iyi bilir - yani. Bellekle çalışmayı kontrol eden belirli bir sistemin paralel olarak çalıştığı açıktır, bu çöp toplayıcıdır.
 
Dmitry Fedoseev :

Yanlış beyan.

ZY Genel olarak, yıllar içinde çok değiştiniz. Nedense sinirlendi. Daha önce, birçok yapıcı teklif hatırlıyorum. Şimdi sürekli olarak bir tür kavgaya düşüyorsunuz: bazı anlamsız anlaşmazlıklar / inkarlar / ifşalar. Bütün bunlar ne için? Daha sert vurmak ister misin? - Ben kendim sana bir taş getireceğim: istediğin gibi vur, ama yine de senin için üzülüyorum.

 
Vasiliy Sokolov :

Dmitry, yanılıyorsun. İşte MetaTrader'ın hala bir çöp toplayıcıya sahip olmasının üç nedeni:

  1. MQL5, yenisi olmadan oluşturulan nesneleri otomatik olarak tamamen siler. Bu tür nesnelere yönelik işaretçiler AUTOMATIC türündedir. Ya Kutsal Ruh ya da çöp toplayıcı onları otomatik olarak silebilir.
  2. Geliştiriciler, MQL5 programının dahili MetaTrader sanal makinesi tarafından yürütüldüğünden birçok kez bahsetmiştir. Sanal makine olduğuna göre bir çöp toplayıcı olması gerekir.
  3. Dinamik bir nesne kullanıcı tarafından düzgün bir şekilde silinmezse, MetaTrader bunu kaç tane ve hangi nesnelerin silinmediğini gösteren bir 'sızdırılmış bellek' mesajı ile gösterecektir. Onlar. MetaTrader ne kadar ve neyin tahsis edildiğini çok iyi bilir - yani. Bellekle çalışmayı kontrol eden belirli bir sistemin paralel olarak çalıştığı açıktır, bu çöp toplayıcıdır.

1. Ve kutsal bir ruh değil, çöp toplayıcı değil.

2.3. Sonsuza kadar hayal kurabilirsiniz.

 
Vasiliy Sokolov :

ZY Genel olarak, yıllar içinde çok değiştiniz. Nedense sinirlendi. Daha önce, birçok yapıcı teklif hatırlıyorum. Şimdi sürekli olarak bir tür kavgaya düşüyorsunuz: bazı anlamsız anlaşmazlıklar / inkarlar / ifşalar. Bütün bunlar ne için? Daha sert vurmak ister misin? - Ben kendim sana bir taş getireceğim: istediğin gibi vur, ama yine de senin için üzülüyorum.

Ağlıyorum!

 
Dmitry Fedoseev :

1. Ve kutsal bir ruh değil, çöp toplayıcı değil.

2.3. Sonsuza kadar hayal kurabilirsiniz.

Belgeleri okuyoruz. Yeni operatör, bir nesneye bir işaretçi değil, nesneye bir tanıtıcı döndürür. Herhangi bir sınıfın, program simge durumuna küçültüldüğünde unutulan nesneyi güvenli bir şekilde öldüren ve aynı zamanda sızıntıların varlığını nazikçe belirten bir sarmalayıcıya dönüşmesini önermeye cesaret ediyorum. Genel olarak, içerik oluşturucuların bu mekanizma hakkında yorum yapması daha iyi olacaktır.
 
Vladimir Simakov :
Belgeleri okuyoruz. Yeni operatör, bir nesneye bir işaretçi değil, nesneye bir tanıtıcı döndürür. Herhangi bir sınıfın, program simge durumuna küçültüldüğünde unutulan nesneyi güvenli bir şekilde öldüren ve aynı zamanda sızıntıların varlığını nazikçe belirten bir sarmalayıcıya dönüşmesini önermeye cesaret ediyorum. Genel olarak, içerik oluşturucuların bu mekanizma hakkında yorum yapması daha iyi olacaktır.

Evet, sadece danışman yazan programcılar hayattan sıkılmasın diye bir bellek sızıntısı hakkında bir mesaj siliyor ve yazıyor.

Nasıl ortaya çıktığını merak ediyorum, dün bir bellek sızıntısı oldu ve bugün prensipte var olamaz.

Ve kuşlardan bahsetmişken, tanımlayıcılar da işaretçilerdir. Ve bilirsiniz, kelimenin kendisinden, ister tanımlayıcı, ister işaretçi, ister tanımlayıcı olsun hiçbir şey değişmez.