Windows 上的分配/取消分配函数不匹配
不正确的释放函数会导致内存损坏问题
描述
当您使用的 Windows® 释放函数未与相应的分配函数正确配对时,就会出现此缺陷。
风险
使用与分配函数不匹配的函数取消内存分配可能会导致内存损坏或未定义的行为。如果您使用的是旧版本的 Windows,不正确的函数还可能导致与新版本的兼容性问题。
修复
根据此表中列出的函数正确配对您的分配和释放函数。
| 分配函数 | 释放函数 |
|---|---|
malloc() | free() |
realloc() | free() |
calloc() | free() |
_aligned_malloc() | _aligned_free() |
_aligned_offset_malloc() | _aligned_free() |
_aligned_realloc() | _aligned_free() |
_aligned_offset_realloc() | _aligned_free() |
_aligned_recalloc() | _aligned_free() |
_aligned_offset_recalloc() | _aligned_free() |
_malloca() | _freea() |
LocalAlloc() | LocalFree() |
LocalReAlloc() | LocalFree() |
GlobalAlloc() | GlobalFree() |
GlobalReAlloc() | GlobalFree() |
VirtualAlloc() | VirtualFree() |
VirtualAllocEx() | VirtualFreeEx() |
VirtualAllocExNuma() | VirtualFreeEx() |
HeapAlloc() | HeapFree() |
HeapReAlloc() | HeapFree() |
示例
结果信息
| 组:动态内存 |
| 语言:C | C++ |
| 默认值:关闭 |
命令行语法:WIN_MISMATCH_DEALLOC
|
| 影响:低 |
版本历史记录
在 R2017b 中推出
另请参阅
无效的指针删除 | 无效的指针释放 | 查找缺陷 (-checkers)
主题
- 解释 Polyspace 桌面端用户界面中的 Bug Finder 结果
- 解释 Polyspace Access Web 界面中的 Bug Finder 结果 (Polyspace Access)
- 通过 Bug 修复或申述在 Polyspace 用户界面中处理结果
- 通过 Bug 修复或申述在 Polyspace Access 中处理结果 (Polyspace Access)