c++ - _malloca 和 malloc 有什么区别?

标签 c++

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

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

谁能解释一下 C++ 中的 malloc_malloca 有什么区别?

最佳答案

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

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

使用_malloca 时要非常小心!一旦函数离开其范围,它分配的内存可能会被释放。它必须通过调用 _freea 来释放。您可能需要仔细阅读此功能的引用文档,并确保您真正了解其中的细节。

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

关于c++ - _malloca 和 malloc 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56106117/

相关文章:

C++:基于积分模板参数创建可变长度元组

c++ - 在 Cmake 中静态链接 Lua

c++ - C++中的递归函数崩溃

c++ - 什么时候使用引用成员?

c++ - Qt 在 QTextBrowser 中的 QVector<T>::operator[]: "index out of range"中抛出 ASSERT 失败

c++ - 将来是否会支持非平凡的指定初始值设定项(C++17 后)?

c++ - UWP ListView 占用的高度超过可用高度

c++ - 关于设置空指针的困惑

c++ - 使用 <tr1/regex> 中的 regex_replace 函数时出错

用于图像数据采集和时间像素分析的 C++ 库