0
我有在下面的一段C++代碼的存儲器泄漏:C++內存泄漏 - 解釋分析
void onNewDepthSample(DepthNode node, DepthNode::NewSampleReceivedData data)
{
INT32 w, h;
FrameFormat_toResolution(data.captureConfiguration.frameFormat, &w, &h);
INT32 size = data.depthMap.size();
int16_t* ptr = new int16_t[size];
for (int i = 0; i < size; i++){
ptr[i] = data.depthMap[i];
}
depthCB(stringToCsharpString(node.getSerialNumber()), &w, &h, ptr);
delete[] ptr;
}
這種方法稱爲每秒30次。內存泄漏分析:
Function details
Function DepthsenseDriver!malloc+49
Source Line
Allocation type Heap allocation(s)
Heap handle 0xcf11e4ac
Allocation Count 75256 allocation(s)
Allocation Size 1,22 MBytes
Leak Probability 100%
Call stack sample 1
Address 0x32335344
Allocation Time 00:05:00 since tracking started
Allocation Size 17 Bytes
Call stack:
DepthsenseDriver!malloc+49
DepthsenseDriver!operator new+1d
DepthsenseDriver!CreateFileW+96b
DepthsenseDriver!DepthSense::FunctionHandler<DepthSense::DepthNode,DepthSense::DepthNode::NewSampleReceivedData>::operator()+5d
我想知道我如何解釋這個分析。例如,有一個CreateFileW函數調用,但在我的代碼中,此函數調用不存在。
我是一個C++小白,所以每頭或改進都是歡迎的。
什麼是「FrameFormat_toResolution」?你可以請添加更多的細節。看起來像這種類型有'operator()'重載,可能會期望一些清理或錯誤。 –
它也可能是一個泄漏探測器的錯誤。嘗試一個載體,看看是否重現。 –
您也可以使用valgrind或泄漏清潔劑仔細檢查。但我不明白你爲什麼認爲泄漏是在泄漏報告中沒有看到的這個功能。我會建議函數CreateFileW – Brahim