Проверка выделения памяти - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Была функция:
struct TreeNode *insert(struct TreeNode* rootPtr, int data) {
    if (rootPtr == NULL)
    {
        rootPtr = (struct TreeNode *)malloc(sizeof(struct TreeNode));
        rootPtr->value = data;
        rootPtr->left = NULL;
        rootPtr->right = NULL;
    }
    else if (data < rootPtr->value) {
        rootPtr->left = insert(rootPtr->left, data);
    }
    else {
        rootPtr->right = insert(rootPtr->right, data);
    }
    return rootPtr;
}
Преподователь сказал что нужно проверять каждый раз память при динамическом выделении памяти. Сделал:
struct TreeNode *insert(struct TreeNode* rootPtr, int data) {
    if (rootPtr == NULL)
    {
        rootPtr = (struct TreeNode *)malloc(sizeof(struct TreeNode));
        if (!(rootPtr = (struct TreeNode *)malloc(sizeof(struct TreeNode)))) {
            printf("Error: can't allocate memory");
            EXIT_FAILURE;
        }
        else {
            rootPtr->value = data;
            rootPtr->left = NULL;
            rootPtr->right = NULL;
        }
    }
    else if (data < rootPtr->value) {
        rootPtr->left = insert(rootPtr->left, data);
    }
    else {
        rootPtr->right = insert(rootPtr->right, data);
    }
    return rootPtr;
}
НО не знаю, правильно ли это. И как можно проверить

Решение задачи: «Проверка выделения памяти»

textual
Листинг программы
if (rootPtr == NULL)
{
  printf("Error: can't allocate memory\n");
  EXIT_FAILURE;
}

Объяснение кода листинга программы

  1. Проверяется, является ли указатель rootPtr равным NULL (что означает, что память не была выделена).
  2. Если rootPtr равен NULL, то выводится сообщение об ошибке Error: can't allocate memory (ошибка: не удается выделить память).
  3. Программа завершается с кодом возврата EXIT_FAILURE (что означает, что программа не смогла выполнить свою задачу).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы