Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Ayrıca bir işaretçiyi referans olarak değil - & olmadan iletebilirsiniz.
daha sonra işaretçi tam olarak yığında oluşturulanı değiştirir, yığın "açıldığında", bir bellek sızıntısı alırız. Tabii ki bunu yapmak iyi değil, ama bir kişi isterse ...
işaretçilerin MQL'deki sınıflara davranışı tahmin edilemez, yöneticilerden biri bir keresinde tüm sınıfların global bellekte (bellek tahsisi) oluşturulduğunu yazdı, yerel görünürlükteki sınıflara işaretçilerin yığında oluşturulduğunu yazıyorsunuz (IMHO, bu nasıl olmalı!)
Belki bir şeyi karıştırıyor olsam da, belki kontrol edeceğim - teorik olarak kontrol etmek zor değil, test sınıfının yıkıcısına Print() yazmak yeterli, yıkıcılar yerel kapsamdan çıkarken otomatik olarak çağrılmalıdır. ..
Yapabilir. Yalnızca bir işaretçiyi & olmadan iletirseniz, yığında geçen değere atanan yeni bir işaretçi oluşturulur. Aynı zamanda fonksiyonda bu pointer'a göre bellek ayırırsak stack üzerinde oluşturulan pointer sırasıyla değişir, stack "açıldığında" ise memory sızıntısı alırız. Tabii ki bunu yapmak iyi değil, ama bir kişi isterse ...
Sızıntı olmayacak. Çünkü fonksiyonda kimse o işaretçi için bir şey ayırmaz.
işaretçilerin MQL'deki sınıflara davranışı tahmin edilemez, yöneticilerden biri bir keresinde tüm sınıfların global bellekte (bellek tahsisi) oluşturulduğunu yazdı, yerel görünürlükteki sınıflara işaretçilerin yığında oluşturulduğunu yazıyorsunuz (IMHO, bu nasıl olmalı!)
Belki bir şeyi karıştırıyor olsam da, belki kontrol edeceğim - teorik olarak kontrol etmek zor değil, test sınıfının yıkıcısına Print () yazmanız yeterli, yıkıcılar yerel kapsamdan çıkarken otomatik olarak çağrılmalıdır.. .
Bellek dinamik olarak (yeni) tahsis edilirse, öbek üzerinde tahsis edilir ve yığın üzerinde bir nesne (CObj obj;) oluşturursanız, bellek de yığın üzerinde ona tahsis edilir.
Sızıntı olmayacak. Çünkü fonksiyonda kimse o işaretçi için bir şey ayırmaz.
Klasik sızıntı. Yığın üzerinde oluşturulan ve işleve iletilen değerle oluşturma sırasında başlatılan bir işaretçiye yeni bir değer atanır ve yeni bir nesneye işaretçi olur. Bundan sonra, yığın çözme sırasında işaretçi güvenli bir şekilde öldürüldü. Q.E.D. Bu tam olarak olması gereken yer:
Bellek dinamik olarak (yeni) tahsis edilirse, öbek üzerinde tahsis edilir ve yığın üzerinde bir nesne (CObj obj;) oluşturursanız, bellek de yığın üzerinde ona tahsis edilir.
mql - (CObj obj;)'de böyle bir şey yoktur.
Klasik sızıntı. Yığın üzerinde oluşturulan ve işleve iletilen değerle oluşturma sırasında başlatılan bir işaretçiye yeni bir değer atanır ve yeni bir nesneye işaretçi olur. Bundan sonra, yığın çözme sırasında işaretçi güvenli bir şekilde öldürüldü. Q.E.D. Bu tam olarak olması gereken yer:
Tanrı'nın armağanını omletle karıştırmayın. Üstelik hatalı bir ifadeyi onaylamak için aptalca kod yazmak...
mql'de böyle bir şey yok - (CObj obj;)
Klasik sızıntı. Yığın üzerinde oluşturulan ve işleve iletilen değerle oluşturma sırasında başlatılan bir işaretçiye yeni bir değer atanır ve yeni bir nesneye işaretçi olur. Bundan sonra, yığın çözme sırasında işaretçi güvenli bir şekilde öldürüldü. Q.E.D. Bu tam olarak olması gereken yer:
Ve neden işleve iletilen işaretçiyi bilerek yeniden atadınız? Elbette bir sızıntı olacak. Ancak bu "klasik bir sızıntı" değil, bir nesneye işaretçi ile çalışmanın klasik bir hatasıdır.
Burada yeni bir nesne oluşturmanız gerekmez, ancak işleve geçirilen işaretçi olan harici bir nesne ile çalışmanız gerekir.
Haydi! Her zaman kullandığım şey bu.
Neresi? Nerede ve nasıl?