我最近尝试将我的C ++应用程序从Mac(gcc)迁移到Windows(MSVC2010)。但是我的代码中有两行导致崩溃:
if (block != NULL)
free(block);
这两行在Mac OS上的gcc下完美运行,但在Windows上崩溃。如果我在Visual Studio中对它们进行了评论,则会导致内存泄漏。 “block”分配为:
uchar* block = (uchar*)malloc(_bytes_per_pixel * _width * _height);
memset(block, 0xff, _bytes_per_pixel * _width * _height);
然后将其传递给另一个填充其值的库中的API函数。
我想知道什么可能导致free()崩溃,以及为什么它只会在MSVC(Windows)下崩溃但不会崩溃(Mac OS)。我是c ++和stackoverflow的新手,所以如果有人能提供帮助我会非常感激。