_malloca 和 malloc 有什么区别?

Sou*_*era 1 c++

我正在使用 Visual Studio 静态代码分析来分析我的代码。我使用malloc大小初始化了指针,然后通过循环尝试访问它。在那里我收到了 C++ 警告代码 6085的警告。

当我将实现从 更改为 时,malloc错误_malloca就消失了。

有人可以解释一下C++ 中的malloc和之间有什么区别吗?_malloca

Dan*_*las 5

根据此处的参考文档,_malloca在堆栈上而不是堆上分配内存。分配的数组的大小是相同的。所以你实际上并没有解决任何问题。

该警告表示分配的数组可能太短。我不知道为什么你会收到此警告,malloc但不会收到此警告。_malloca但如果编译器最初是正确的,那么问题仍然存在。

一定要非常小心_malloca!一旦函数离开其作用域,它分配的内存就可能被释放。并且它必须通过调用来释放_freea。您可能需要仔细阅读该函数的参考文档,并确保您真正理解细节。

当然,您可能想检查最初从编译器收到的警告是否真实,或者编译器是否错误。