gpt4 book ai didi

c++ - 在 C 或 C++ 中返回结构是否安全?

转载 作者:IT老高 更新时间:2023-10-28 12:04:36 24 4
gpt4 key购买 nike

我的理解是不应该这样做,但我相信我已经看到过这样的例子(注意代码不一定在语法上正确,但想法就在那里)

typedef struct{
int a,b;
}mystruct;

然后这是一个函数

mystruct func(int c, int d){
mystruct retval;
retval.a = c;
retval.b = d;
return retval;
}

我知道如果我们想做这样的事情,我们应该总是返回一个指向 malloc 结构的指针,但我很肯定我已经看到了这样的例子。这个对吗?就我个人而言,我总是要么返回一个指向 malloc 结构的指针,要么只是通过对函数的引用进行传递并修改那里的值。 (因为我的理解是,一旦函数的作用域结束,任何用于分配结构的栈都可以被覆盖)。

让我们为这个问题添加第二部分:这是否因编译器而异?如果是这样,那么最新版本的桌面编译器的行为是什么:gcc、g++ 和 Visual Studio?

对此事有什么想法?

最佳答案

这是完全安全的,这样做并没有错。另外:它不会因编译器而异。

通常,当(如您的示例)您的结构不是太大时,我认为这种方法甚至比返回 malloc 的结构更好(malloc 是一项昂贵的操作)。

关于c++ - 在 C 或 C++ 中返回结构是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9590827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com