这是问题的后续问题,其中我有一个类似的结构
struct {
int a;
//other fields
string s1;
string s2;
} strMyStruct;
如果对象是别人的malloc()并将其传递给我进行快速处理(在myFunc
我负责的函数中),我将如何初始化所有成员。如何在函数中myFunc
确保数字成员初始化为0,字符串成员初始化为空字符串?
strMyStruct *p = (strMyStruct *)malloc(sizeof(x1));
myFunc(p);
更新1
由于该结构的成员可能会经常更改,因此我不希望我的代码引用任何单个成员。
这是一个可怕的主意。您确实应该使用new
而不是分配此对象malloc()
。
但是如果需要的话,我们可以使用new放置在预分配的内存中分配一个C ++对象:
strMyStruct *p = (strMyStruct *) malloc(sizeof(*p));
new(p) strMyStruct;
并确保在调用之前调用了析构函数free()
:
p->~strMyStruct();
free(p);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句