【问题标题】:Size of a Byte[] array changes during execution in c#在 C# 中执行期间 Byte[] 数组的大小发生变化
【发布时间】:2013-05-30 23:01:20
【问题描述】:

我创建了一个类来管理串行端口,它允许我将 ROM 代码发送到在机器人上运行的虚拟机。

这是声明:

public byte[] mensaje_a_enviar = new byte[4097];

有时我只发送 20 个字节或更少,但有时我必须一次发送 4097 个字节......

奇怪的问题是,这个字节数组在运行时会调整为更小的东西(比如 10 个字节)。 例如,当我尝试再次填充 100 个字节时,这显然会引发溢出异常......

我的程序中只有一个此类的实例。

为什么会这样?

【问题讨论】:

  • 向我们展示您实际尝试发送的代码以及堆栈跟踪。
  • The strange problem is that this byte array resizes to something smaller (like 10 bytes) during runtime. 不,永远不会。你是这么认为的。
  • 在执行过程中某处正在调用“mensaje_a_enviar="。您可能需要发布更多代码才能获得有关此问题的帮助。
  • 写一个small完整的程序来演示这个问题。在这样做的过程中,您将生成一个我们可以分析的程序,或者您会发现您的错误。
  • 我知道它一定不会发生......我不想发布它,因为我认为你会否决它,但这种情况发生在我身上......我在调试器中看到它时它给我抛出了异常......我如何获得堆栈跟踪@Woot4Moo?抱歉,我正在学习电子工程,关于 VS 有几件事我不知道...

标签: c# byte bytearray


【解决方案1】:

你的代码中的其他地方

mensaje_a_enviar = //Somthing

SomeFunction(ref mensaje_a_enviar)

然后在SomeFunction 里面你有类似第一行的东西。

这两个示例所做的是将数组替换为从等号右侧返回的新数组。您应该只将数组作为参数传递给函数,而不使用引用 (SomeFunction(mensaje_a_enviar)) 或通过索引器 (mensaje_a_enviar[i]) 访问元素。

检查你的代码,看看你在哪里使用我上面的两段代码之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2012-12-12
    相关资源
    最近更新 更多