Я недавно пытаюсь перенести приложение C ++ с Mac (gcc) на Windows (MSVC2010). Но две строки в моем коде вызывают сбои:
if (block != NULL)
free(block);
Эти две строки прекрасно работают под gcc в Mac OS, но в Windows приводят к сбою. Если я прокомментирую их в Visual Studio, это приведет к утечке памяти. «блок» распределяется как:
uchar* block = (uchar*)malloc(_bytes_per_pixel * _width * _height);
memset(block, 0xff, _bytes_per_pixel * _width * _height);
и позже она передается в функцию API из другой библиотеки, заполняющей ее значение.
Интересно, что может привести к сбою free (), и почему он падает только в MSVC (Windows), но не в gcc (Mac OS). Я новичок в c ++ и stackoverflow, поэтому я был бы очень признателен, если кто-нибудь может помочь.
Задача ещё не решена.
Других решений пока нет …