代码检查:在循环中使用 stackalloc
此检查会报告循环中的 stackalloc 表达式。 通过 stackalloc 分配的内存在当前方法返回时才会被释放,而不是在每次循环结束时释放。 因此,在循环中重复使用可能会导致堆栈临时增长,看起来像内存泄漏。
示例
for (int i = 0; i < 10; i++)
{
Span<int> buffer = stackalloc int[128];
Use(buffer);
}
Span<int> buffer = stackalloc int[128];
for (int i = 0; i < 10; i++)
{
Use(buffer);
}
2026年 5月 8日