Aly*_*Aly 1 c++ scope dynamic-arrays dynamic-allocation
我正在为函数中的数组动态分配内存.我的问题是:一旦函数完成运行就释放了内存?
码:
void f(){
cv::Mat* arr = new cv::Mat[1];
...
}
Run Code Online (Sandbox Code Playgroud)
不,new当指针超出范围时,不会自动释放使用的内存.
但是,您可以(并且应该)使用C++ 11 unique_ptr,它在超出范围时处理释放内存:
void f(){
std::unique_ptr<cv::Mat[]> arr(new cv::Mat[1]);
...
}
Run Code Online (Sandbox Code Playgroud)
C++ 11还提供shared_ptr了您可能想要复制的指针.现代C++应该努力用这些"智能指针",为他们提供更安全的内存管理,几乎没有性能损失.