Всем добрый вечер.
Имеем: связанный список, например такой структуры:
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.