【问题标题】:If I have heap allocated member in my struct, do I have to allocate the struct itself in the heap?如果我的结构中有堆分配的成员,我是否必须在堆中分配结构本身?
【发布时间】:2021-12-09 13:45:15
【问题描述】:
struct Vector {
    size_t size;
    char ** data;
} Vector;

我有一个向量结构。如果结构具有动态分配的数据,我是否必须在堆上分配 Vector?

更新:

这在 c++ 类中是否同样适用?

【问题讨论】:

  • 虽然在 C++ 中也是如此,但通常您希望通过使用智能指针或字符串类来隐藏实现细节。

标签: c++ c heap-memory


【解决方案1】:

不,没有这样的规则。驻留在内存任何部分的指针可以指向内存的任何其他部分。

也就是说,如果您的struct Vector 的分配方式与data 不同,那么两者的生命周期可能不同,并且可能更难避免使用后释放错误或内存泄漏。因此,如果data 是动态分配的,大多数时候您希望 struct Vector 也被动态分配。但这不是必需的。

【讨论】:

  • 感谢您的回答,谢谢!
猜你喜欢
  • 2019-10-25
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 2011-01-10
  • 2012-10-01
  • 2011-03-06
  • 2021-08-25
相关资源
最近更新 更多