Şüpheler, çünkü bir numaralı sınıfa işaretçi, ama aslında iki numaralı bellek sınıfında. Gerçekten de, yıkıcıların olduğu durumlarda, bu önemli, bu yüzden düşündüm ve aniden burada bir sorun olabilir. Böyle bir durumda, belleğin doğru serbest bırakılmasının ancak bellekte bazı işaretler (boş sonlandırıcılı char gibi) veya buna benzer bir şey varsa gerçekleşebileceğini düşünüyorum, bu yüzden belleğin nasıl tahsis edildiğini sordum.
220Volt : Şüpheler, çünkü bir numaralı sınıfa işaretçi, ama aslında iki numaralı bellek sınıfında. Gerçekten de, yıkıcıların olduğu durumlarda, bu önemli, bu yüzden düşündüm ve aniden burada bir sorun olabilir. Böyle bir durumda, belleğin doğru serbest bırakılmasının ancak bellekte bazı işaretler (boş sonlandırıcılı char gibi) veya buna benzer bir şey varsa gerçekleşebileceğini düşünüyorum, bu yüzden belleğin nasıl tahsis edildiğini sordum.
Şüpheniz, kurucuları kaydetmemiş olmanızdan kaynaklanmaktadır (bu durumda ne olduğunu anlamak için bu önemlidir), bu örneği çalıştırmayı deneyin ve her şeyi anlayacaksınız:
Tehdit oluşturmanın kendisi, silme gibi, adım adım gerçekleşir ve tüm bu bilgiler saklanır (sanal işaretçinin kendisi, sınıfın tabandan ve alt öğeden bir bileşik olarak oluşturulduğunu unutmayın) ve silme sırasında yıkıcılar tersine çağrılır. sipariş, daha sonradan önceye.
Yıkıcılarla ilgili değil, ana şey değiller, sınıfın kendisiyle veya daha doğrusu kaç bayt aldığıyla ilgili. 200 bayt ayırdığımız ortaya çıktı ve sonra 100 baytlık bir nesneyi temsil eden işaretçi tarafından işaret edilen belleği boşaltmamı söylüyoruz.
220Volt : Yıkıcılarla ilgili değil, ana şey değiller, sınıfın kendisiyle veya daha doğrusu kaç bayt aldığıyla ilgili. 200 bayt ayırdığımız ortaya çıktı ve sonra 100 baytlık bir nesneyi temsil eden işaretçi tarafından işaret edilen belleği boşaltmamı söylüyoruz.
Anladığım kadarıyla sorunuz hafıza havuzunun özellikleri ile ilgili. Evet, hafıza havuzu, silme çağrısı ile parçanın ne kadar süreyle serbest bırakılacağını bilir. Bu bilgilerin depolandığı yer, havuzun uygulanmasına bağlıdır.
Örneğin, C++'da new aracılığıyla tahsis edilmemiş bir nesneye işaretçi verirseniz, uygulamanızın nasıl çökeceğini göreceksiniz.
220Volt : Yıkıcılarla ilgili değil, ana şey değiller, sınıfın kendisiyle veya daha doğrusu kaç bayt aldığıyla ilgili. 200 bayt ayırdığımız ortaya çıktı ve sonra 100 baytlık bir nesneyi temsil eden işaretçi tarafından işaret edilen belleği boşaltmamı söylüyoruz.
Örneğimi başlatmadığınızı çok iyi anladım. Yoksa böyle sorular olmazdı.
Örneğin, bir dizi int için bellek ayırmanın ve ardından bir int'nin küçük olmasına rağmen, muhtemelen sınıflarla da her şeyi silmenin mümkün olduğunu hatırladım. Cevaplar için teşekkürler.
mql5 : Anladığım kadarıyla sorunuz hafıza havuzunun özellikleri ile ilgili. Evet, hafıza havuzu, silme çağrısı ile parçanın ne kadar süreyle serbest bırakılacağını bilir. Bu bilgilerin depolandığı yer, havuzun uygulanmasına bağlıdır.
Örneğin, C++'da new aracılığıyla tahsis edilmemiş bir nesneye işaretçi verirseniz, uygulamanızın nasıl çökeceğini göreceksiniz.
MQL5'teki yıkıcılar her zaman sanaldır. Her şey doğru şekilde silindi, Print'i (__ FUNCSIG __) indirmeyi deneyin; yıkıcılarda.
VC++'da yaptım, ancak bellek serbest bırakma mekanizmalarının aynı olduğunu düşünüyorum?
Ancak örneğiniz doğru çalışacaktır, çünkü. yalnızca temel sınıfın sanal yıkıcısını belirtebilirsiniz.
Fikri biraz farklı ifade etmeye çalışacağım:
Verilen:
Hareketler:
Not: resim bellek modelini gösterir)
Şüpheler, çünkü bir numaralı sınıfa işaretçi, ama aslında iki numaralı bellek sınıfında. Gerçekten de, yıkıcıların olduğu durumlarda, bu önemli, bu yüzden düşündüm ve aniden burada bir sorun olabilir. Böyle bir durumda, belleğin doğru serbest bırakılmasının ancak bellekte bazı işaretler (boş sonlandırıcılı char gibi) veya buna benzer bir şey varsa gerçekleşebileceğini düşünüyorum, bu yüzden belleğin nasıl tahsis edildiğini sordum.
Şüpheniz, kurucuları kaydetmemiş olmanızdan kaynaklanmaktadır (bu durumda ne olduğunu anlamak için bu önemlidir), bu örneği çalıştırmayı deneyin ve her şeyi anlayacaksınız:
Tehdit oluşturmanın kendisi, silme gibi, adım adım gerçekleşir ve tüm bu bilgiler saklanır (sanal işaretçinin kendisi, sınıfın tabandan ve alt öğeden bir bileşik olarak oluşturulduğunu unutmayın) ve silme sırasında yıkıcılar tersine çağrılır. sipariş, daha sonradan önceye.
Yıkıcılarla ilgili değil, ana şey değiller, sınıfın kendisiyle veya daha doğrusu kaç bayt aldığıyla ilgili. 200 bayt ayırdığımız ortaya çıktı ve sonra 100 baytlık bir nesneyi temsil eden işaretçi tarafından işaret edilen belleği boşaltmamı söylüyoruz.
Evet, hafıza havuzu, silme çağrısı ile parçanın ne kadar süreyle serbest bırakılacağını bilir.
Bu bilgilerin depolandığı yer, havuzun uygulanmasına bağlıdır.
Örneğin, C++'da new aracılığıyla tahsis edilmemiş bir nesneye işaretçi verirseniz, uygulamanızın nasıl çökeceğini göreceksiniz.
Yıkıcılarla ilgili değil, ana şey değiller, sınıfın kendisiyle veya daha doğrusu kaç bayt aldığıyla ilgili. 200 bayt ayırdığımız ortaya çıktı ve sonra 100 baytlık bir nesneyi temsil eden işaretçi tarafından işaret edilen belleği boşaltmamı söylüyoruz.
Anladığım kadarıyla sorunuz hafıza havuzunun özellikleri ile ilgili.
Evet, hafıza havuzu, silme çağrısı ile parçanın ne kadar süreyle serbest bırakılacağını bilir.
Bu bilgilerin depolandığı yer, havuzun uygulanmasına bağlıdır.
Örneğin, C++'da new aracılığıyla tahsis edilmemiş bir nesneye işaretçi verirseniz, uygulamanızın nasıl çökeceğini göreceksiniz.