Это фактический код C от Pthreads:Использование таНос в Pthreads
ThreadParms *parms = NULL;
if ((parms = (ThreadParms *) malloc (sizeof (*parms))) == NULL)
{
goto FAIL0;
}
parms->tid = thread;
parms->start = start;
parms->arg = arg;
Почему они решили таНос * Parms вместо ThreadParms? Похоже, что он выделяет только указатель (который был бы ошибкой), но он, по-видимому, выделяет размер всей структуры. Это верно?
'sizeof' может принимать тип или переменную – redneb
Я предполагаю, что я принимаю это, так как они решили использовать malloc, почему бы не просто ThreadParms в sizeof()? Тем не менее, я исповедую синтаксис sizeof (* что-то), бросил меня немного. Это мой недостаток. – Jiminion
'* params' разделяет' ThreadParams' тип, поэтому вы будете 'malloc' полный размер структуры с помощью любого метода. Как говорят ответы, это экономит на расходах на обслуживание, если тип 'params' будет когда-либо изменяться. – yano