可能性の重複: OpenCV double free or corruption (out): Aborted (core dumped)ダブルフリーまたは破損(アウト)エラーの原因は何ですか?
私は、クライアントから画像を受信して画像を処理し、データを返すために、サーバーでのOpenCVを使用する関数を作成しました。 私は関数を使用した場合にのみこのエラーが発生することを認識しました。無料()。以下は私の関数内のコードです。私はfree(sockData);
は私が間違って何をやってコメントを解除するとき
// 2. Create Mat Image
Mat image = Mat::zeros(height, width, CV_8UC3);
uchar sockData[imageSize];
//Receive Image data here
printf("Receiving Image Data\n");
for (int i = 0; i < imageSize; i += bytecount)
{
if ((bytecount = recv(*csock, sockData +i, imageSize - i, 0)) == -1)
{
fprintf(stderr, "Error receiving image %d\n", errno);
}
}
// deallocate
deallocateMemory(csock);
// Image Data Received, Now Reconstructing Image
printf("Image Data Received, Now Reconstructing\n");
int ptr = 0;
for (int i = 0; i < image.rows; i++)
{
for (int j = 0; j < image.cols; j++)
{
image.at<cv::Vec3b>(i,j) = cv::Vec3b(sockData[ptr+0],sockData[ptr+1],
sockData[ptr+2]);ptr = ptr + 3;
}
}
// Write produced output to stdout - Print
printf("Image Processed, now Displaying Results...\n");
displayResultsOnConsole(results);
// free(sockData);
return 0;
エラーが表示されますか?
'uchar sockData [imageSize];'はスタックに割り当てられているので、 'free()'が失敗します。 –