返回具有数组成员的本地结构
return local struct that have array member
我阅读了如何从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成员。这是真的吗?
如果是真的,那么在我的想法中,它是内存泄漏,而不是?
当动态分配对象的指针丢失而不删除分配时,内存泄漏就会发生。您的示例不包含任何动态分配,因此它不能具有内存泄漏。
相关文章:
- 使用 std::index_sequence 初始化具有固定大小数组成员的 POD 结构容器
- 用于对项目进行分组并将单个项目映射到其他组成员的数据结构
- 访问数组中所有结构的成员
- 具有灵活数组成员的结构的大小
- 初始化固定的 C 数组成员结构
- 带有布尔数组成员的 C++ 结构.如何在主代码中使用
- size_t结构非数组成员崩溃的强制转换
- 返回具有数组成员的本地结构
- 从结构传递数组成员会导致访问读取冲突
- 有没有办法将数组行为作为静态结构数据成员?
- 初始化具有动态长度字符串的 char 数组成员的结构
- 如何将结构的成员数组作为参数传递给函数
- 从单独函数中的结构中检索数组成员
- 将void*强制转换为具有数组成员的结构
- 具有不同大小的二维结构数组成员变量
- 带有std::array的可变进模板结构体与c风格数组成员的区别
- C++错误:初始化结构实例的向量数组成员
- 结构的数组成员的默认值
- 在C++中只包含一个int数组成员的结构中填充
- 如何将字符数组复制到结构的成员中