如果我的结构中有堆分配成员,我是否必须在堆中分配结构本身?

If I have heap allocated member in my struct, do I have to allocate the struct itself in the heap?

struct Vector {
    size_t size;
    char ** data;
} Vector;

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

更新:

这是否适用于 C++ class?

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

就是说,如果您的 struct Vector 的分配方式与其 data 不同,那么两者最终可能会有不同的生命周期,并且可能更难避免 use-after-免费错误或内存泄漏。所以如果 data 是动态分配的,大多数时候你会 想要 struct Vector 也是动态分配的。但这不是必需的。