如果我的结构中有堆分配成员,我是否必须在堆中分配结构本身?
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
也是动态分配的。但这不是必需的。
struct Vector {
size_t size;
char ** data;
} Vector;
我有一个向量结构。如果结构具有动态分配的数据,是否必须在堆上分配 Vector?
更新:
这是否适用于 C++ class?
不,没有这样的规则。驻留在内存任何部分的指针可能指向内存的任何其他部分。
就是说,如果您的 struct Vector
的分配方式与其 data
不同,那么两者最终可能会有不同的生命周期,并且可能更难避免 use-after-免费错误或内存泄漏。所以如果 data
是动态分配的,大多数时候你会 想要 struct Vector
也是动态分配的。但这不是必需的。