【发布时间】:2015-08-17 19:39:47
【问题描述】:
我想知道 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(),即使它只是一个包装器。在您的main中调用free(pointer)是不好的设计 - 您在示例中没有这样做,因此会泄漏内存......有点。 -
标准警告:请do not cast
malloc()和C中的家人的返回值。 -
malloc返回一个指针,是标准库的重要组成部分。你怎么看? -
如果没有它,你将如何在 C 中的任何重要程序中相处??
-
接近投票者:说真的,如果人们认为好的/坏的程序设计是“基于意见”或“艺术”,那么你需要走出车库,接受一些适当的编程教育。什么是好的和坏的程序设计不是基于意见的,关于这个主题有大量的研究,并且全世界的程序员之间都有很多共识。如果人们不能在 SO 上提出程序设计问题,那我不知道这里能问什么。
标签: c arrays pointers static return