LINUX.ORG.RU

История изменений

Исправление byko3y, (текущая версия) :

Как определяется владение msg->data?

Пардон, использовал один и тот же идентификатор в разных местах. «msg» в агенте — это actor_msg_t:

typedef struct actor_message_struct {
  actor_msg_t *next;
  actor_id sender;
  actor_id dest;
  void *data;
  long type;
  size_t size;
} actor_msg_t;

В то же время, «msg» в main_func — это то, чему в агенте соответствует «msg->data». То есть, при пересылке сообщения указанное число байт из «char *msg» копируются в то, что позже будет «void * msg->data», а по «arelease(msg)» эта копия будет высвобождена.

Исходная версия byko3y, :

Как определяется владение msg->data?

Пардон, использовал один и тот же идентификатор в разных местах. «msg» в агенте — это actor_msg_t:

typedef struct actor_message_struct {
  actor_msg_t *next;
  actor_id sender;
  actor_id dest;
  void *data;
  long type;
  size_t size;
} actor_msg_t;

В то же время, «msg» в main_func — это то, чему в агенте соответствует «msg->data». То есть, при пересылке сообщения указанное число байт из " char *msg" копируются в то, что позже будет «void * msg->data», а по «arelease(msg)» эта копия будет высвобождена.