关于c/c++返回结构体的问题

看到很多关于返回结构体的讨论,分成两派,一派是说如如果这个结构体是局部变量则有风险,因为局部变量会在调用函数结束后被释放,释放后这个结构的成员就可以被任何人修改,也就是时通过返回结构获得的结构会被随时改变,风险不可小觑。

这个问题的关键,其实是要看返回的是个什么东西,如果返回的是那个局部结构体的首地址,上面这种说法是对的,但是如果返回的是整个结构的拷贝,那就不会有上文说的风险

不知道C/C++到底是怎么处理的,有权威说法吗?

感觉没有好坏之分,看你使用的情况,如果只是当临时的,就局部

需求决定你的使用,适合的才是好的

你说的都对,视情况而定

在函数返回时应该是调用的结构体的默认拷贝构造函数,所以,如果是系统类型的一般都没问题,如有有一些比较复杂的类型,往往会出问题,出问题的原因是找不到结构体的合适的拷贝构造函数。

我个人认为结构体应该放全局,但局部结构体只是范围小了点,有没有坏处没试过。