12
用C或C ++返回结构是否安全?
我的理解是不应该这样做,但是我相信我已经看过了类似示例的示例(注意,代码在语法上不一定正确,但思想确实存在) 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)的行为是什么? 有什么想法吗?