здесь нужно понять, что malloc
не видит вычисления, сделанные в этом
malloc(sizeof(ts_request_def) + (2 * 1024 * 1024));
Это так же, как
int sz = sizeof(ts_request_def) + (2 * 1024 * 1024);
malloc(sz);
Вы можете подумать, что он выделяет 2 куска памяти, и, по вашему мнению, они являются "структурой", "некоторыми буферами". Но Маллок этого не видит.