最近在写一代程序是要用到指针,代码如下,编译时能通过,但运行就报异常:InvalidProgramException:
当程序包含无效 Microsoft 中间语言 (MSIL) 或元数据时将引发的异常。这通常表示生成程序的编译器中有 bug。using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace SmartDeviceProject2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
unsafe
{
int i = 0;
int j = 0
MessageBox.Show("sdfsfsfsdfsdfsdfs");
int* p = stackalloc int[1222];
MessageBox.Show("sdfsfsfsdfsdfsdfs");
}
}
}
}A:每次点击BUTTON事件时就报错,(以上是测试代码,编译时能通过)。如果屏蔽掉 int* p = stackalloc int[1222];这句就正常(Wince平台)。
B:以上代码在XP平台下运行正常,WINCE平台就报错。感觉好像WINCE平台不支持stackalloc 关键字似的?还是我那里参数没设好似的。现求教,谢谢。
C:WINCE平台 VS2008 C#异常指针
当程序包含无效 Microsoft 中间语言 (MSIL) 或元数据时将引发的异常。这通常表示生成程序的编译器中有 bug。using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace SmartDeviceProject2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
unsafe
{
int i = 0;
int j = 0
MessageBox.Show("sdfsfsfsdfsdfsdfs");
int* p = stackalloc int[1222];
MessageBox.Show("sdfsfsfsdfsdfsdfs");
}
}
}
}A:每次点击BUTTON事件时就报错,(以上是测试代码,编译时能通过)。如果屏蔽掉 int* p = stackalloc int[1222];这句就正常(Wince平台)。
B:以上代码在XP平台下运行正常,WINCE平台就报错。感觉好像WINCE平台不支持stackalloc 关键字似的?还是我那里参数没设好似的。现求教,谢谢。
C:WINCE平台 VS2008 C#异常指针
{
// Unsafe method: takes pointer to int:
unsafe static void SquarePtrParam(int* p)
{
*p *= *p;
} unsafe static void Main()
{
int i = 5;
// Unsafe method: uses address-of operator (&):
SquarePtrParam(&i);
Console.WriteLine(i);
}
}
// Output: 25
我有写unsafe的哦 以上代码是能够通过编译的,只是点击BUTTON事件时才会报上述错误的。谢谢