【发布时间】:2018-07-10 05:08:39
【问题描述】:
struct Temp {};
struct Temp *newTemp() {
struct Temp *temp = malloc(sizeof(struct Temp));
return temp;
}
int main() {
struct Temp *temp = newTemp(); // any problem?
return 0;
}
从函数内部(工厂方法)返回结构的实例有什么问题吗?
请问指针会无效。有人建议,如果你返回一个指针,它应该指向调用者堆栈上的某个东西、一个全局的或堆上的某个东西
【问题讨论】:
-
唯一的问题是内存泄漏。由于您即将退出,因此在这种情况下这不是主要问题,但总的来说,内存泄漏是一个问题,尤其是在长时间运行的程序中。
-
一切都很好,只是不要忘记
free在适当位置的指针,例如在退出主函数之前。
标签: c pointers memory-management struct