Проверка выделения памяти - 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; }
Объяснение кода листинга программы
- Проверяется, является ли указатель rootPtr равным NULL (что означает, что память не была выделена).
- Если rootPtr равен NULL, то выводится сообщение об ошибке
Error: can't allocate memory
(ошибка: не удается выделить память). - Программа завершается с кодом возврата EXIT_FAILURE (что означает, что программа не смогла выполнить свою задачу).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д