最近在写一代程序是要用到指针,代码如下,编译时能通过,但运行就报异常: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#异常指针

解决方案 »

  1.   

    用非托管代码 是不是需要 unsafe
      

  2.   

    // compile with: /unsafe    class UnsafeTest
        {
           // 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
      

  3.   


    我有写unsafe的哦  以上代码是能够通过编译的,只是点击BUTTON事件时才会报上述错误的。谢谢