Всем добрый вечер.
Имеем: связанный список, например такой структуры:
typedef struct t_t_buffer_list_data {
  uint8_t *data;
  uint16_t data_len;
  uint32_t id;
  
  struct t_t_buffer_list_data *next;
  
} t_buffer_list_data;
typedef struct {
  t_buffer_list_data *first; //указатель на первую структуру в списке
  t_buffer_list_data *last; // соответственно на последную
  
  uint32_t count;     //общее кол-во структур
} t_buffer_list_main;
Вторая структура для удобства, чтобы указатели и кол-во было упаковано. Определяется глобальная переменная для этого модуля:
buffer_list_main t_buffer_list_main;
t_buffer_list_data *buffer_list_add_item(t_buffer_list_data * last, uint8_t *data, uint16_t data_size, uint32_t id) {
  t_buffer_list_data *buffer_list_data;
  buffer_list_main.count++;
  buffer_list_data = (t_buffer_list_data*)malloc(sizeof(t_buffer_list_data));
  buffer_list_data->data = malloc(data_size);
  buffer_list_data->next = NULL;
  buffer_list_data->data_len = data_size;
  buffer_list_data->session_id = session_id;
  memcpy(buffer_list_data->data, data, data_size);
  
  if (buffer_list_main.last != NULL) {
    buffer_list_main.last->next = buffer_list_data;
  }
  return buffer_list_data;
}
buffer_list_main.last->next = buffer_list_data;
Там дальше и другие есть названия функций по списку... но трабла именно в этом присвоении - коментил ругаться valgrind перестает. В общем, решил убрать buffer_list_main и вынести из структуры указатели на первый и последний элементы, ругань прошла. Может кто подскажет из-за чего такое происходит? выравнивание делал на всякий случай. Заранее благодарен! И да система убунту 12.01 gcc 4,6,3.
