什么时候函数调用中使用的临时对象被破坏?

时间:2015-01-16 02:39:30

标签: c++ language-lawyer

我有类似的课程:

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之前给我留下悬空指针吗? (假设dstsize是正确的。)

我知道写一个非常简单的解决方法

{
    Foo tmp = barInstance.getFoo();
    memcpy(dst, tmp.data, size);
} // tmp destructed here after memcpy()

但我很好奇是否有必要。

0 个答案:

没有答案