Разыменование предупреждения NULL-указателя при генерации узла - PullRequest
0 голосов
/ 28 апреля 2019

VS 2019 пометил следующий код c предупреждением c6011.Предполагается, что функция инициализирует пустой узел для моего двусвязного списка «Клиент».Я делаю что-то не так при инициализации нового узла?

//struct for my doubly linked list
typedef struct _client {
    char NAME[30];
    unsigned long PHONE;
    unsigned long ID;
    unsigned char CountryID;
    struct client *next;
    struct client *previous;
}client, *client_t;

//Function which creates a new node and returns a ptr to the node
client_t AddClientNode() 
{
    client_t ptr = (client_t)malloc(sizeof(client));
    //Warning C6011 Dereferencing NULL pointer 'ptr'. 
    ptr->next = NULL; 
    ptr->previous = NULL;
    return ptr;
}

1 Ответ

0 голосов
/ 28 апреля 2019

Предложение отставной ниндзя сработало для моего кода.PTR требовалась проверка, чтобы убедиться, что он не был нулевым из-за сбоя malloc.Приведенный ниже код является рабочей функцией без предупреждения:

client_t AddClientNode() {
    client_t ptr = malloc(sizeof(client));
    if (ptr)
    {
        ptr->next = NULL;
        ptr->previous = NULL;
        return ptr;
    }
    else printf("Malloc Failed to Allocate Memory");
    return NULL;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...