C 函数的返回指针是好/坏设计?

rat*_*zip 5 c arrays static pointers return

我想知道 C 函数的返回指针是好还是坏设计?如果这是一个不好的做法,那么在下面的例子中什么是好的做法:

问题是继续部分: c函数返回静态变量

data.h文件中:

#include <stdio.h>
#include <stdlib.h> 

typedef struct
{
   int age;
   int number;
} person;

person * getPersonInfo();
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

main.c

#include "data.h"

int main()
{
   person* pointer = getPersonInfo();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

基本上,文件中的main函数main需要获取静态指针指向的数组所有元素的值person_p,如果这不是一个好的做法,那么好的做法应该是什么?

Law*_*llo 5

它不好的唯一原因是因为它背后没有任何内存管理结构。在您当前的代码中,您有内存泄漏,因为您person通过 malloc()分配了一个结构但没有释放它。

考虑编写一个包装函数来为您处理内存管理,如下所示:

void freePerson(struct person * personToDelete)
{
    free(personToDelete);
}
Run Code Online (Sandbox Code Playgroud)

然后在你的主要:

int main()
{
   person* pointer = getPersonInfo();
   freePerson(pointer); // After you are done using it
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我还必须警告不要将malloc(). 根据我的经验,它可能会导致未定义的行为。