gpt4 book ai didi

c# - 为什么 stackalloc 初始化有不一致的行为?

转载 作者:可可西里 更新时间:2023-11-01 08:10:17 29 4
gpt4 key购买 nike

以下代码用非零值初始化两个 stackalloc 数组。虽然数组 A 已正确初始化,但数组 B 仍填充零,这与预期相反。

通过反汇编编译后的可执行文件,可以看到没有为数组B生成初始化代码,这是为什么?

using System;

namespace ConsoleApp1
{
class Program
{
static unsafe void Main(string[] args)
{
double a1 = 1;
double* A = stackalloc double[] { a1, 0, 0, a1, a1 }; // results in 1 0 0 1 1
double* B = stackalloc double[] { a1, 0, 0, 0, 0}; // results in 0 0 0 0 0

for (int i = 0; i < 5; i++) Console.Write($"{A[i]} ");
Console.WriteLine();
for (int i = 0; i < 5; i++) Console.Write($"{B[i]} ");
}
}
}

预期结果:

1 0 0 1 1
1 0 0 0 0

实际结果:

1 0 0 1 1
0 0 0 0 0

最佳答案

感谢您在这里写了一个很好的重现!这似乎是 issue 29092 的副本.重现有点不同,但快速浏览一下,它遇到了同样的问题,也应该被修复。对此的修复将包含在 Dev16 中。

关于c# - 为什么 stackalloc 初始化有不一致的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53981915/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com