Joh*_*n D 2 .net mono xamarin.ios ios c#-4.0
虽然我不太习惯在C#中使用不安全的上下文,但我确实理解我可能有时会使用它.
为了正确使用它,为了将字节值写入IntPtr,我可以从安全上下文中编写以下内容:
for (int i = 0; i < counter; i++)
{
System.Runtime.InteropServices.Marshal.WriteByte (data, i, 0);
}
Run Code Online (Sandbox Code Playgroud)
如何从不安全的环境中做同样的事情?
更具体地说,我实际上是在尝试将浮点值写入Intptr变量,该变量实际上是一个浮点数组指针.我没有看到任何能够使用System.Runtime.InteropServices从安全上下文处理浮点数据的重载.
我尝试了以下但得到错误:
malloc:***对象0x17e9eca4的错误:释放对象的校验和不正确 - 对象可能在被释放后被修改.
var data = (float*)buffer.FloatChannelData;
for (int i = 0; i < buffer.FrameLength; i++)
{
data [i] = 0.0f;
*data++ = 0.0f; // also tried this but got the same error
}
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助.
额外细节:
我正在尝试将数据写入Xamarin.IOS中的AudioPCMBuffers.我认为缓冲区包含一个float数组但是@Passant在注释中指出它实际上包含一个指向帧长度浮点数组的指针数组.同样的前提适用,无论是从安全还是不安全的环境,我都希望能够将数据写入缓冲区.一个例子将非常有用.感谢并为这种困惑道歉
归档时间: |
|
查看次数: |
450 次 |
最近记录: |