在结构体中初始化字符串对象(II)

小包

这是问题的后续问题,其中我有一个类似的结构

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章