Я хочу знать, является ли указатель возврата из функции C хорошим/плохим? Если это плохая практика, что было бы хорошая практика в следующем примере:указатель возврата от функции C хороший/плохой дизайн?
вопросом является продолжением части: c function return static variable
в data.h
файл:
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int age;
int number;
} person;
person * getPersonInfo();
в data.c
#include "data.h"
static struct person* person_p = NULL;
person * getPersonInfo()
{
person_p = (struct person*)malloc(10 * sizeof(struct person));
return person_p;
}
в main.c
#include "data.h"
int main()
{
person* pointer = getPersonInfo();
return 0;
}
в основном, main
функция в файле main
необходимо получить значение всех элементов массива, который указывал на статический указатель person_p
, если это не является хорошей практикой, то, что хорошая практика должна быть?
Если у вас есть функция, выполняющая 'malloc', вы также должны иметь функцию соответствия' free() ', даже если это всего лишь оболочка. Плохой дизайн - называть 'free (pointer)' в вашем 'main' - который вы не делаете в примере, тем самым утечка памяти ... kinda. – mtijanic
Стандартное предупреждение: Пожалуйста, [не использовать] (http://stackoverflow.com/q/605845/2173917) возвращаемое значение 'malloc()' и family в 'C'. –
'malloc' возвращает указатель и является большой частью стандартной библиотеки. Как вы думаете? – Eregrith