작성자는 오브젝트에 대한 메모리를 할당하고, 오브젝트에 대한 초기자(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);