Свободная память хорошо работает на сборке GCC, но не на MSVC

Я недавно пытаюсь перенести приложение 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, поэтому я был бы очень признателен, если кто-нибудь может помочь.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]