我正在创建(分配)“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
足够智能,在超出范围时将其删除?
答案 0 :(得分:2)
没错,std::complex<double>(0.0, -0 * freq * 2 * M_PI)
是一个匿名临时,C ++标准非常具体地说它生活在&#34;只要声明;从概念上讲,std::complex
的析构函数在赋值给resZeros
之后被调用。
匿名临时不会导致内存泄漏。