返回具有数组成员的本地结构

return local struct that have array member

本文关键字:结构 组成员 数组 返回      更新时间:2023-10-16

我阅读了如何从C/C 函数返回本地数组?主题和对其最后一个代码块感到困惑:

#include <iostream> 
using namespace std; 
struct arrWrap { 
    int arr[100]; 
  ~arrWrap()
  {
    
  }
}; 
struct arrWrap fun() 
{ 
    struct arrWrap x; 
    x.arr[0] = 10; 
    x.arr[1] = 20; 
    return x; 
} 
int main() 
{ 
    struct arrWrap x = fun(); 
    cout << x.arr[0] << " " << x.arr[1]; 
    return 0; 
} 

有人可以为我分析这个想法吗?

成为类的成员是唯一可以像这样一个倒数中复制数组的唯一一次。

(实际上,这就是std::array的工作方式!仅在班级中包装C数组。(

这很安全,很好。复制arrWrap对象时,它将封装的数组也将是。

没有动态分配,也没有内存泄漏。即使不是这种情况,所以副本没有发生,并且您有某种悬而未决的参考,能够看到旧值不一定是记忆泄漏的证据。

如果默认构造函数不破坏ARR成员

如果默认构造函数在函数完成后未销毁ARR成员。这是真的吗?

如果是真的,那么在我的想法中,它是内存泄漏,而不是?

当动态分配对象的指针丢失而不删除分配时,内存泄漏就会发生。您的示例不包含任何动态分配,因此它不能具有内存泄漏。