class Cbase
{
public :
virtual ~Cbase(){};
int k;
};
class Cchild: public Cbase
{
public :
~Cchild(){};
double *p;
int f;
};
İki sınıfım var, bir sonraki neslin örneğinin ( base - child - child2 - ...) bellekte daha fazla yer kapladığına inanıyorum. New operatörüne parametrelerde sınıfı ileterek tam olarak ne kadar bellek ayrılacağını söylüyoruz. Ancak silme operatöründe ne kadar silineceği konusunda bir şey söylemiyoruz. Bu yansımalara dayanarak, aşağıdaki durumda ne olacağı tam olarak belli değil:
Onlar. Yani, *pClass'ı Cbase'e işaretçi olarak ilan ettik (Cchild'e kıyasla küçük bir sınıf), ama aslında Cchild'e işaret ediyor. Buradan soru, delete () nasıl davranacak? Cbase boyutuna eşit bayt sayısını serbest bırakacak mı (o zaman bellek tıkanacak) yoksa silme doğru bir şekilde mi olacak?
Not: peki, konuyla ilgili bir soru için: ayrılmış bellek alanında (yeni) bu alanın boyutunu anlayabileceğiniz bir tür etiket var mı (bir karakterin boş bir sonlandırıcı ile nasıl depolandığı gibi bir şey). son)? Veya başka bir deyişle, doğru bir şekilde beyan ettiğim sınıfların boyutları hakkında hiçbir şey bilmeyen bir kod parçası hafızayı boşaltabilir mi?
Buradan soru, delete () nasıl davranacak? Cbase boyutuna eşit bayt sayısını serbest bırakacak mı (o zaman bellek tıkanacak) yoksa silme doğru bir şekilde mi olacak?
elbette doğru şekilde kaldıracaktır. yıkıcılara kesme noktaları dağıtabilirsiniz
Not: peki, konuyla ilgili bir soru için: ayrılmış bellek alanında (yeni) bu alanın boyutunu anlayabileceğiniz bir tür etiket var mı (bir karakterin boş bir sonlandırıcı ile nasıl depolandığı gibi bir şey). son)? Veya başka bir deyişle, doğru bir şekilde beyan ettiğim sınıfların boyutları hakkında hiçbir şey bilmeyen bir kod parçası hafızayı boşaltabilir mi?
tabii ki doğru bir şekilde silinecektir. yıkıcılara kesme noktaları dağıtabilirsiniz
Bu sorunun oradan büyüyen bacakları var. Yaklaşık olarak anlatıldığı gibi yaptım (yıkıcı sanal değildi) ve işaretçi sınıfının altındaki yıkıcılar çağrılmadı.
Bence sizeof derleme zamanında çalışır ve örneğin başka bir süreçten belleği boşaltmaktan bahsediyorum. Eğer bu mümkünse, o zaman silme fonksiyonunun işinin netleşeceğini düşünüyorum.
Soru, yeni aracılığıyla sınıf işlevlerine ne tahsis ettiğimizle ilgili değil, sınıfın verileriyle, onun "kök" üyeleriyle ilgilidir. Sonuçta, onlar da boş alan değil.
Sorun... Lütfen bir sinyal modülü takın (Bende yok). Bakalım.
Daha da garip. etkisini anlamıyorum.
etki yalnızca başlatma sırasında, test cihazında her şey yolunda
tamam, seçmeye gerek yok, gerçekten ihtiyacım yok
ZigZag göstergesinden artık orada olmayan değerleri okur (muhtemelen yeniden çizmeden önceydiler) Bu önlenebilir mi?
Tamponda değerler varsa neden tekrar çekmiyor...
Merhaba, lütfen aşağıdakileri açıklayın:
İki sınıfım var, bir sonraki neslin örneğinin ( base - child - child2 - ...) bellekte daha fazla yer kapladığına inanıyorum. New operatörüne parametrelerde sınıfı ileterek tam olarak ne kadar bellek ayrılacağını söylüyoruz. Ancak silme operatöründe ne kadar silineceği konusunda bir şey söylemiyoruz. Bu yansımalara dayanarak, aşağıdaki durumda ne olacağı tam olarak belli değil:
Onlar. Yani, *pClass'ı Cbase'e işaretçi olarak ilan ettik (Cchild'e kıyasla küçük bir sınıf), ama aslında Cchild'e işaret ediyor. Buradan soru, delete () nasıl davranacak? Cbase boyutuna eşit bayt sayısını serbest bırakacak mı (o zaman bellek tıkanacak) yoksa silme doğru bir şekilde mi olacak?
Not: peki, konuyla ilgili bir soru için: ayrılmış bellek alanında (yeni) bu alanın boyutunu anlayabileceğiniz bir tür etiket var mı (bir karakterin boş bir sonlandırıcı ile nasıl depolandığı gibi bir şey). son)? Veya başka bir deyişle, doğru bir şekilde beyan ettiğim sınıfların boyutları hakkında hiçbir şey bilmeyen bir kod parçası hafızayı boşaltabilir mi?
220Volt :
Buradan soru, delete () nasıl davranacak? Cbase boyutuna eşit bayt sayısını serbest bırakacak mı (o zaman bellek tıkanacak) yoksa silme doğru bir şekilde mi olacak?
elbette doğru şekilde kaldıracaktır. yıkıcılara kesme noktaları dağıtabilirsiniz
Not: peki, konuyla ilgili bir soru için: ayrılmış bellek alanında (yeni) bu alanın boyutunu anlayabileceğiniz bir tür etiket var mı (bir karakterin boş bir sonlandırıcı ile nasıl depolandığı gibi bir şey). son)? Veya başka bir deyişle, doğru bir şekilde beyan ettiğim sınıfların boyutları hakkında hiçbir şey bilmeyen bir kod parçası hafızayı boşaltabilir mi?
tabii ki doğru bir şekilde silinecektir. yıkıcılara kesme noktaları dağıtabilirsiniz
boyutu?