오류, 버그, 질문 - 페이지 1875

 

아마도 OnStart() 함수 에서 수동으로 호출하기 때문일 것입니다.

정적 객체의 소멸자는 이 함수 다음에 역순으로 호출됩니다.

 
Koldun Zloy :

아마도 OnStart() 함수 에서 수동으로 호출하기 때문일 것입니다.

정적 객체의 소멸자는 이 함수 다음에 역순으로 호출됩니다.

모든 것이 바로 여기에서 작동해야 하는 것 같습니다.
 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 ()
{
}

하지만 누수가 발생하고 있습니다. 개는 어디를 팠습니까?

 
fxsaber :
모든 것이 바로 여기에서 작동해야 하는 것 같습니다.

하지만 누수가 발생하고 있습니다. 개는 어디를 팠습니까?


두 개의 개체를 만들고 하나만 삭제합니다.

CLASS::Tmp 개체가 필요한 이유는 무엇입니까?

 
Koldun Zloy :


두 개의 개체를 만들고 하나만 삭제합니다.

두 개체는 어디에서 생성됩니까?

CLASS::Tmp 개체가 필요한 이유는 무엇입니까?

덕분에 더 이상 필요하지 않습니다. 그러나 언어를 이해하려면 여전히 예제에서 누수가 발생하는 이유를 이해해야 합니다.

숨겨진 생성자가 있는 숨겨진 객체는 어떤 경우에는 논리적입니다(아마도 가장 명백한 것 ).

 

네, 제가 틀렸습니다. 하나의 개체만 생성되고 삭제되지 않았습니다.

왜냐하면 생성자를 호출할 때

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

CLASS::Tmp에는 여전히 개체의 주소가 아닌 가비지가 포함되어 있습니다.

 
1) 정적 PTR<CLASS> CLASS::Ptr 구조가 생성됩니다.
2) 새로운 CLASS라는 클래스가 생성됩니다. CLASS() 생성자를 실행하고 CLASS::Ptr이 Null에 할당됩니다.
3) CLASS::Tmp 값이 새 CLASS에 대한 포인터로 업데이트됩니다.
4) PTR<CLASS> CLASS::Ptr 구조가 삭제되고 소멸자가 실행되며 CLASS::Ptr 삭제를 시도합니다(Null).
 
Koldun Zloy :

CLASS::Tmp에는 여전히 개체의 주소가 아닌 가비지가 포함되어 있습니다.

고맙습니다! 어떻게 든 나는이 증거를 보지 못했습니다.

세르게이 주블릭 :
1) 정적 PTR<CLASS> CLASS::Ptr 구조가 생성됩니다.
2) 새로운 CLASS라는 클래스가 생성됩니다. CLASS() 생성자를 실행하고 CLASS::Ptr이 Null에 할당됩니다.
3) CLASS::Tmp 값이 새 CLASS에 대한 포인터로 업데이트됩니다.
4) PTR<CLASS> CLASS::Ptr 구조가 삭제되고 소멸자가 실행되고 CLASS::Ptr 삭제를 시도합니다(그리고 Null임).

고맙습니다. Null이 아니라 쓰레기입니다.

 

모드이면 좋을텐데

 ChartSetInteger ( 0,CHART_SHOW, false );

거래 작업 (진입/출구)의 화살표가 표시되지 않았습니다. 그들은 거기에서 절대적으로 쓸모가 없습니다.

 
여러분, 질문이 주제에 없습니다. 저는 새내기입니다. 일자리를 주문하고 싶습니다. 지금 잔액이 0입니다. 주제를 열 수 있습니까? 아니면 먼저 계정을 충전해야 합니까? 계좌에서 돈이 막혀서 조금 이해가 안가는데...
 
The service is unavailable.
나는 발레리안 팅크를 위해 떠났습니다 ... (