クリエーターは、オブジェクトのメモリーを割り振り、オブジェクトのイニシャライザーを呼び出し、作成したオブジェクトへのポインターを返します。
例えば、オブジェクト 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 キーワードが、メモリーを割り振られているオブジェクトまたはイベントの名前で置き換えられます。