这个 "on-fly" 传递对象会不会内存泄漏?

Would this "on-fly" passing object suffer of memory leak?

我正在创建(分配)"on-fly" 一个复数,同时将它传递给 exp() 函数。完整代码:

std::complex<double> resZeros(0.0, 0.0);
resZeros = a0 * std::exp(std::complex<double>(0.0, -0 * freq * 2 * M_PI));

这会引入内存泄漏吗?事实上我并没有手动销毁std::complex<double>(0.0, -0 * freq * 2 * M_PI).

或者 std::complex 是否足够聪明,可以在超出范围时将其删除?

不,没关系:std::complex<double>(0.0, -0 * freq * 2 * M_PI) 是一个 匿名临时 并且 C++ 标准非常具体地说它 "lives" 只要声明;从概念上讲,std::complex 的析构函数在 resZeros.

的赋值之后被调用

匿名临时对象不会导致内存泄漏。