Hatalar, hatalar, sorular - sayfa 1875

 

Muhtemelen OnStart() işlevinde manuel olarak çağırdığınız için.

Statik nesnelerin yıkıcıları bu fonksiyondan sonra ters sırada çağrılır.

 
Koldun Zloy :

Muhtemelen OnStart() işlevinde manuel olarak çağırdığınız için.

Statik nesnelerin yıkıcıları bu fonksiyondan sonra ters sırada çağrılır.

Görünüşe göre her şey burada çalışması gerekiyor.
 template < typename T>
struct PTR
{
  T* Ptr;
  
  PTR( void )
  {
  }
  
   void operator =( T* &Value )
  {
     this .Ptr = Value;
  }
  
  ~PTR( void )
  {
     Print ( __FUNCSIG__ );
     delete this .Ptr;
  }
};

class CLASS
{
private :
   static PTR<CLASS> Ptr;
   static CLASS* Tmp;
  
  CLASS()
  {
    CLASS::Ptr = CLASS::Tmp;
  }
};

static PTR<CLASS> CLASS::Ptr;
static CLASS* CLASS::Tmp = new CLASS;

void OnStart ()
{
}

Ama sızıntı oluyor. Köpek nerede kazdı?

 
fxsaber :
Görünüşe göre her şey burada çalışması gerekiyor.

Ama sızıntı oluyor. Köpek nerede kazdı?


İki nesne oluşturuyorsunuz ve yalnızca birini siliyorsunuz.

Neden bir CLASS::Tmp nesnesine ihtiyacınız var?

 
Koldun Zloy :


İki nesne oluşturuyorsunuz ve yalnızca birini siliyorsunuz.

İki nesne nerede oluşturulur?

Neden bir CLASS::Tmp nesnesine ihtiyacınız var?

Senin sayende, artık gerekli değil. Ancak dili anlamak için yine de örneğin neden bir sızıntıya neden olduğunu anlamak istiyorsunuz.

Gizli yapıcılara sahip gizli nesneler bazı durumlarda mantıklıdır (muhtemelen en belirgin olanı ).

 

Evet, yanılmışım. Oluşturulmuş ve silinmemiş yalnızca bir nesneniz var.

Çünkü yapıcıyı aradığınızda

  CLASS()
  {
    CLASS::Ptr = CLASS::Tmp;
  }

CLASS::Tmp hala çöp içeriyor, nesnenin adresini değil.

 
1) Statik bir PTR<CLASS> CLASS::Ptr yapısı oluşturulur;
2) Bir sınıf oluşturulur, yeni SINIF; CLASS() yapıcısını çalıştırır ve CLASS::Ptr Null'a atanır
3) CLASS::Tmp değeri, yeni CLASS için bir işaretçi ile güncellenir
4) PTR<CLASS> CLASS::Ptr yapısı silinir, yıkıcı yürütülür, CLASS::Ptr'yi silmeye çalışır (ve Null'dur)
 
Koldun Zloy :

CLASS::Tmp hala çöp içeriyor, nesnenin adresini değil.

Teşekkür ederim! Her nasılsa bu kanıtı görmedim.

Sergey Dzyublik :
1) Statik bir PTR<CLASS> CLASS::Ptr yapısı oluşturulur;
2) Bir sınıf oluşturulur, yeni SINIF; CLASS() yapıcısını çalıştırır ve CLASS::Ptr Null'a atanır
3) CLASS::Tmp değeri, yeni CLASS için bir işaretçi ile güncellenir
4) PTR<CLASS> CLASS::Ptr yapısı silinir, yıkıcı yürütülür, CLASS::Ptr'yi silmeye çalışır (ve Null'dur)

Teşekkür ederim. Sadece Null değil, çöp.

 

modda olsa güzel olurdu

 ChartSetInteger ( 0,CHART_SHOW, false );

alım satım işlemlerinden (girişler/çıkışlar) oklar görüntülenmiyordu. Orada kesinlikle işe yaramazlar.

 
Arkadaşlar soru konu başlığında yok yeniyim iş siparişi vermek istiyorum 0 bakiye üzerinden hemen konu açabilirmiyim ? Yoksa önce hesabımı doldurmam mı gerekiyor? Hesaptan para bloke edildiğinde biraz anlamadım ...
 
The service is unavailable.
Kediotu tentürü için ayrıldım ... (