У меня есть следующий код:Разыменование пустого указателя
#include <inttypes.h>
#include <stdlib.h>
struct a
{
void *p;
};
int main(void)
{
struct a *ptr = malloc(sizeof(struct a));
ptr->p = malloc(sizeof(uint8_t));
*((uint8_t *) ptr->p) = 2;
return 0;
}
Я прогоняю указатель недействительного перед тем разыменования, чтобы избежать предупреждений
предупреждения: разыменований Пустоты * 'указателя
Я нарушаю любое правило, делая это или этот код хорош?
Какие подозрения у вас есть о правилах, которые могут быть нарушены? –
Если нет конкретной причины, по которой тип 'p' не просто' uint8_t * ', это ужасный код. – Staven
@MattMcNabb литье изменяемое значение lvalue? Просто хотел подтвердить, что это хорошо или нет? – Gopi