Эта программа дает сбой !, как новичок может кто-нибудь сказать, где здесь происходит повреждение памяти и что делать, чтобы решить эту проблему?
Здесь я пытаюсь извлечь ROI из части данных и снова привязать ее к исходным данным.
Измененный код ниже, здесь нет проблем, и 'newdata' будет обрезать данные из исходной переменной 'data'
#include "stdafx.h"
#include <iostream>
using namespace std;
void ExtractROI(unsigned short *image, int nRows, int nCols, unsigned short *imageROI)
{
int indexROI = 0;
for (int i = 0; i < nRows; i++)
{
for (int j = 0; j < nCols; j++)
{
imageROI[indexROI] = image[i * nCols + j];
indexROI++;
}
}
}
int main()
{
const int nRows = 12;
const int nCols = 12;
unsigned short *data = new unsigned short[nRows * nCols];
for (int i = 0; i < nRows; i++)
{
for (int j = 0; j < nCols; j++)
{
data[i * nCols + j] = i * nCols + j;
}
}
unsigned short *newdata = new unsigned short[2 * 2];
memset(newdata, 0, sizeof(unsigned short) * 2 * 2);
ExtractROI(data, 2, 2, newdata);
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
cout << "(" << i << "," << j << ")" << " = " << newdata[i * 2 + j] << endl;
}
}
delete[] data;
delete[] newdata;
char x;
cin >> x;
return 0;
}
/ * Старый код ниже * /
#include "stdafx.h"
#include <iostream>
using namespace std;
void ExtractROI(unsigned short *image, int nRows, int nCols, unsigned short *imageROI)
{
int indexROI = 0;
for (int i = 0; i < nRows; i++)
{
for (int j = 0; j < nCols; j++)
{
imageROI[indexROI] = image[i * nCols + j];
indexROI++;
}
}
}
int main()
{
const int nRows = 12;
const int nCols = 12;
unsigned short *data = new unsigned short[nRows * nCols];
for (int i = 0; i < nRows; i++)
{
for (int j = 0; j < nCols; j++)
{
data[i * nCols + j] = i * nCols + j;
}
}
unsigned short *newdata = new unsigned short[2 * 2];
memset(newdata, 0, sizeof(unsigned short) * 2 * 2);
ExtractROI(data, nRows, nCols, newdata);
data = newdata;
for (int i = 0; i < nRows; i++)
{
for (int j = 0; j < nCols; j++)
{
cout << "(" << i << "," << j << ")" << " = " << data[i * nCols + j] << endl;
}
}
/*delete[] data;
delete[] newdata;*/
char x;
cin >> x;
return 0;
}