创建程序为对象分配内存,调用对象的初始化方法,并且返回指向所创建对象的指针。
例如,会为对象 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);