Тема: Перевірка виділення пам'яті
Була функція:
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;
}
Викладач сказав, що потрібно перевіряти malloc, чи поверенула вона вказівник NULL:
struct TreeNode *insert(struct TreeNode* rootPtr, int data) {
if (rootPtr == NULL)
{
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;
}
Невпевненний чи правильно я написав чи ні. Як можно перевірити ?