오브젝트 작성자

오브젝트 작성 오퍼레이션은 오브젝트를 작성하고 해당되는 초기자(initializer)를 호출합니다. 해당 이름의 형식은 <object>_Create()입니다.

작성자는 오브젝트에 대한 메모리를 할당하고, 오브젝트에 대한 초기자(initializer)를 호출한 후 작성된 오브젝트에 대한 포인터를 리턴합니다.

예를 들어, 오브젝트 A에 대해 다음 작성자가 생성됩니다.

A * A_Create() {
   A* me = (A *) malloc(sizeof(A));
   if(me!=NULL)
      {
         A_Init(me);
      }
   return me;
}

반응 오브젝트의 경우, 태스크에 대한 포인터는 작성자의 인수 목록(의 끝)에 추가됩니다. 이 포인터는 반응 오브젝트가 실행 중인 스레드(태스크)를 오브젝트에 알립니다. 예를 들면, 다음과 같습니다.

A * A_Create(RiCTask * p_task) {
   A* me = (A *) malloc(sizeof(A));
   if(me!=NULL)
      {
         A_Init(me, p_task);
      }
   DYNAMICALLY_ALLOCATED(me);
   return me;
}

C에서는 인수에 기본값을 제공할 수 없으므로, 태스크에 대해 NULL 값을 전달하여 인스턴스가 기본 태스크에서 실행되도록 할 수 있습니다.

C_CG::Class::AllocateMemory 특성 및 C_CG::Event::AllocateMemory 특성은 오브젝트나 이벤트에 대해 동적으로 메모리를 할당하기 위해 생성된 문자열을 지정합니다. 이 문자열은 Create() 오퍼레이션에서 사용됩니다. 이 특성의 기본값은 다음과 같습니다.

($cname*) malloc(sizeof($cname));

생성된 코드에서 $cname 키워드는 메모리가 할당되는 오브젝트나 이벤트의 이름으로 바뀝니다.

동적 메모리 할당

작성자 함수를 호출하여 동적으로 오브젝트를 작성할 수 있습니다. 예를 들면, 다음과 같습니다.

B *new_B;
new_B = B_create();

삭제 함수를 호출하여 동적으로 오브젝트를 삭제할 수 있습니다. 예를 들면, 다음과 같습니다.

B_Destroy(new_B);

피드백