在C++中,如果函数返回一个结构,使用它后是否需要删除该结构?

use*_*292 3 c++ struct memory-leaks

typedef typedef struct _OBJTIME {
    WORD wYear;
    WORD wMonth;
    WORD wDayOfWeek;
    WORD wDay;
    WORD wHour;
    WORD wMinute;
    WORD wSecond;
    WORD wMilliseconds;
} OBJTIME

OBJTIME objTime; //Note, this objTime is modified other function
OBJTIME ObjectParent::returnObjTime() const
{
    return objTime;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 如果另一个类调用returnObjTime()函数,比如说:

    OBJTIME t = objectP-> returnObjTime()
    我假设将创建一个OBJTIME结构的新副本?

  2. 我完成后是否需要删除变量"t"?它会造成内存泄漏吗?

谢谢.

Luk*_* B. 6

不,您正在返回全局副本,objTime副本和全局都有基于其作用域的持续时间,这意味着当它们的作用域结束时,它们将自动从内存中释放.


小智 5

这是副本是的,但它不是由创建的new,所以你不需要delete它.