首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于C语言中返回函数的问题

关于C语言中返回函数的问题
EN

Stack Overflow用户
提问于 2011-09-07 21:43:55
回答 10查看 384关注 0票数 10

我是一个学习C ++的java程序员,有一个关于函数的问题。这两者之间有什么区别:

代码语言:javascript
运行
复制
main()
{
    struct person myperson;

    myperson = myfunction();

    return;
}

struct person myfunction()
{
     struct person myPerson;
     myPerson.firstname = "John";
     myPerson.lastname = "Doe";
     return myPerson;
}

VS

代码语言:javascript
运行
复制
main()
{
    struct person *myperson;

    myperson = myfunction();

    return;
}

struct person* myfunction()
{
     struct person *myPerson;
     myPerson = malloc(sizeof(struct person));
     myPerson->firstname = "John";
     myPerson->lastname = "Doe";
     return myPerson;
}

这些在C中是合法的吗?你会选择一个而不是其他。非常感谢大家!

EN

Stack Overflow用户

发布于 2011-09-07 21:48:09

第一个函数分配堆栈上的变量。myfunction中的person对象是从函数中复制并返回的,效率较低,但不会出现内存泄漏。

第二个示例返回一个指向动态分配(使用malloc)的person对象的指针( *)。由malloc分配的person对象永远不会被销毁,除非你显式地调用free(),而你没有这样做--所以你有一个内存泄漏。

你需要在C中显式地释放内存,它没有像Java那样的垃圾回收。

票数 0
EN
查看全部 10 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7334891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档