Вы не выделяете никакого пространства для структуры, просто указатель, который является нулевым.
struct companyInfo * pdata = NULL;
pdata = calloc( 1, sizeof(struct companyInfo) );
if( pdata != NULL )
{
strncpy(pdata->companyName, "sdfsd", sizeof(pdata->companyName) - 1);
}
Примечание: calloc()
также обнулит память для вас, в отличие от malloc()
который просто выделит.Кроме того, вы должны проверить возврат этих функций, чтобы убедиться, что указатель не равен NULL.
Важно: Любая память, выделенная с помощью malloc (), calloc (), ex .., должнабыть явно освобожденным.
Пример:
if( pdata != NULL )
{
free( pdata );
}
exit(0);