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

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

собственно требовалась работа со стеком, в отладчике определил что прога брякается на Push при первом же перевыделении памяти (на выделении не брякается)
bool Push(POINT *points, int *count, POINT point)
{
    if((*count) < 0) return false;
    if((*count) == 0)
    {
        points = (POINT*) malloc(sizeof(POINT));
        points[*count] = point;
        (*count)++;
    }
    else
    {
        (*count)++;
        points = (POINT*) realloc(points, (*count) * sizeof(POINT));
        points[*count] = point;
    }
    return true;
}
 
POINT* Pop(POINT *points, int *count)
{
    if((*count) <= 0) return NULL;
    POINT point = points[(*count)];
    (*count)--;
    points = (POINT*) realloc(points, (*count) * sizeof(POINT));
    return &point;
}
где ошибка?

Код к задаче: «Фейл на перевыделении памяти для стека - C (СИ)»

textual
bool Push(POINT **points, int *count, POINT *point)
{
    if((*count) < 0) return false;
    POINT *pointer;
    if((*count) == 0) pointer = (POINT*) malloc(sizeof(POINT));
    else pointer = (POINT*) realloc(*points, ((*count) + 1) * sizeof(POINT));
    if(pointer == NULL) return false;
    *points = pointer;
    *points[(*count)++] = *point;
    return true;
}
 
bool Pop(POINT **points, int *count, POINT *point)
{
    if((*count) <= 0)
    {
        point = NULL;
        return false;
    }
    *point = *points[--(*count)];
    POINT *pointer = (POINT*) realloc(*points, (*count) * sizeof(POINT));
    if(pointer == NULL) return false;
    *points = pointer;
    return true;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

6   голосов, оценка 4.000 из 5


СДЕЛАЙТЕ РЕПОСТ