ビデオフレームに 10 * 10 マトリックスを描画しようとしましたが、描画関数は次のとおりです。
void AddMatrixToVideo::process(cv::Mat &videoFrameInput)
{
int MatrixStartPointX = 0;
int MatrixStartPointY = 0;
int m,n;
for(int i = 0; i < matrixNumInRow; ++i) {
for(int j = 0; j < matrixNumInColm; ++j) {
//draw horizontal line
for(m = MatrixStartPointX; m < MatrixStartPointX + matrixWidth; ++m) {
processGrayFrame(m,MatrixStartPointY,videoFrameInput);
processGrayFrame(m,MatrixStartPointY + matrixHeight,videoFrameInput);
}
//draw vertical line
for(n = MatrixStartPointY; n < MatrixStartPointY + matrixHeight; ++n) {
// processGrayFrame(MatrixStartPointX,n,videoFrameInput);
// processGrayFrame(MatrixStartPointX + matrixWidth,n,videoFrameInput);
}
MatrixStartPointX += matrixWidth;
}
MatrixStartPointX = 0;
MatrixStartPointY += matrixHeight;
}
}
これが processGrayFrame() です。
void AddMatrixToVideo::processGrayFrame(int x,int y,cv::Mat &videoFrameInput)
{
videoFrameInput.at<uchar>(y,x) = 255;
}
プログラムを実行した後、描画の進行状況が機能し、メモリ使用量が増加し続け、最終的にメモリが不足するようです。processGrameFrame() 関数にコメントすると、メモリの問題が発生します (もちろん、これ以上線は描画されません)。だから私の質問は、割り当て操作がメモリリークの問題を引き起こすのはなぜですか?