ANSI C: нужно ли использовать malloc () при создании структуры?

Допустим, у меня есть эта структура в ANSI C:

typedef struct _point
{
    float x;
    float y;
} Point;

и эта функция для создания этой структуры :

Point createpoint(float x, float y)
{
    Point p;
    p.x = x;
    p.y = y;
    return p; 
}

Это позволяет мне создать struct с этой функцией, например:

int main()
{
    Point pointOne = createpoint(5, 6);  
    Point pointTwo = createpoint(10, 4);
    float distance = calculatedistancefunc(pointOne, pointTwo);

    /* ...other stuff */

    return 0;
}

Кто-то сказал мне, что этот код недействителен, потому что struct не получает malloc 'd в createpoint (float x, float y) до того, как она будет возвращена, и что структура будет удалена. Однако, когда я использую свою struct вот так, кажется, что она не удаляется.

Итак, мой вопрос: мне нужно malloc эту структуру , и почему? / почему бы и нет?

15
задан galath 27 February 2018 в 09:32
поделиться