1

我最近试图将我的 C++ 应用程序从 Mac (gcc) 迁移到 Windows (MSVC2010)。但是我的代码中有两行导致崩溃:

if (block != NULL)
    free(block);

这两行在 Mac OS 上的 gcc 下工作得非常好,但在 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 的新手,所以如果有人能提供帮助,我将不胜感激。

4

0 回答 0