我有类似的课程:
struct Foo {
char *data;
Foo(args) { /* initialize data */ }
~Foo() { /* clean up data */ }
};
struct Bar {
...
Foo getFoo() const { /* properly initialize and return a Foo */ }
};
我想这样做:
memcpy(dst, barInstance.getFoo().data, size);
我的问题是memcpy
定义良好,或者临时Foo
的析构函数会在调用memcpy
之前给我留下悬空指针吗? (假设dst
,size
是正确的。)
我知道写一个非常简单的解决方法
{
Foo tmp = barInstance.getFoo();
memcpy(dst, tmp.data, size);
} // tmp destructed here after memcpy()
但我很好奇是否有必要。