Я вынимаю данные из промышленной камеры uEye и получаю изображения через API-интерфейс камеры.Освобождение данных от char * в C++
Мой код выглядит примерно так:
bool get_image(char*& img)
{
void *pMemVoid; //pointer to where the image is stored
// Takes an image from the camera. If successful, returns true, otherwise
// returns false
if (is_GetImageMem(hCam, &pMemVoid) == IS_SUCCESS){
img = (char*) pMemVoid;
pMemVoid = NULL;
return true;
}
else
return false;
}
Я извлечение данных изображения, и если он успешен, он возвращает истину, в противном случае возвращает ложь.
Проблема Я полагаю, что я утечка памяти с помощью img = (char *) pMemVoid, потому что я неоднократно вызываю эту функцию и не отпускаю эти данные. Как освободить память, назначенную img?
EDIT:
Я инициализация камеры в функции, которая использует is_AllocImageMem:
// Global variables for camera functions
HIDS hCam = 0;
char* ppcImgMem;
int pid;
/* Initializes the uEye camera. If camera initialization is successful, it
* returns true, otherwise returns false */
bool init_camera()
{
int nRet = is_InitCamera (&hCam, NULL);
is_AllocImageMem(hCam,752, 480, 1 ,&ppcImgMem, &pid);
is_SetImageMem(hCam, ppcImgMem, pid);
is_SetDisplayMode (hCam, IS_SET_DM_DIB);
is_SetColorMode (hCam, IS_CM_MONO8);
int pnCol , pnColMode;
is_GetColorDepth(hCam, &pnCol , &pnColMode);
is_CaptureVideo(hCam, IS_WAIT);
if (nRet != IS_SUCCESS)
{
if (nRet == IS_STARTER_FW_UPLOAD_NEEDED)
{
hCam = hCam | IS_ALLOW_STARTER_FW_UPLOAD;
nRet = is_InitCamera (&hCam, NULL);
}
cout << "camera failed to initialize " << endl;
return false;
}
else
return true;
}
Документация для api должна сказать вам об этом. У них может быть своя специальная «свободная» функция. – BoBTFish
На самом деле, глядя [здесь] (http://lagis-vi.univ-lille1.fr/~lo/ens/ivi/uEye_Programming_Manual/index.html?is_getimagemem.htm), кажется, вы получаете указатель на какую-то память, принадлежит/управляется в другом месте, хотя это не совсем понятно (может быть, это тот, кто понимает эту библиотеку). Поэтому я не думаю, что вам нужно что-то делать здесь. – BoBTFish
Является ли ваше намерение вашей функцией get_image копировать данные изображения с камеры в буфер, который вы контролируете? –