日期:2014-05-17  浏览次数:20810 次

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

------解决方案--------------------
// 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&nb