C#调用C++,报错"尝试读取或写入受保护的内存。这通常指示其他内存已损坏"

C#调用C++,出错"尝试读取或写入受保护的内存。这通常指示其他内存已损坏"
错误:C#调用C++,出错"尝试读取或写入受保护的内存。这通常指示其他内存已损坏" 


C#代码: [DllImport("testdoas.dll", EntryPoint = "ReadXml")]
            public static extern void ReadXml();


C++代码:     mediate_analysis_window_t m_awProp;
                         memset(&m_awProp, 0, sizeof(mediate_analysis_window_t));


mediate_analysis_window_t  是自定义的类,声明如下:
typedef struct mediate_analysis_window
  {
    char name[ANLYSWIN_NAME_BUFFER_LENGTH];
    int kuruczMode;
    int refSpectrumSelection;
    int refMaxdoasSelection;
    double refMaxdoasSzaCenter;
    double refMaxdoasSzaDelta;
    char refOneFile[FILENAME_BUFFER_LENGTH];
    char refTwoFile[FILENAME_BUFFER_LENGTH];
    char residualFile[FILENAME_BUFFER_LENGTH];
    double fitMinWavelength;
    double fitMaxWavelength;
    double refSzaCenter;
    double refSzaDelta;
    double refMinLongitude;
    double refMaxLongitude;
    double refMinLatitude;
    double refMaxLatitude;
    int refNs;
    int pixelTypeEast;
    int pixelTypeCenter;
    int pixelTypeWest;
    int pixelTypeBackscan;
    int requireSpectrum;
    int requirePolynomial;
    int requireFit;
    int requireResidual;
    int requirePredefined;
    int requireRefRatio;
    /* table data ... */
    cross_section_list_t crossSectionList;
    struct anlyswin_linear linear;
    struct anlyswin_nonlinear nonlinear;
    shift_stretch_list_t shiftStretchList;
    gap_list_t gapList;
    output_list_t outputList;

  } mediate_analysis_window_t;
------解决思路----------------------
自定义结构体嵌套。应该尽量用基本类型的接口
------解决思路----------------------
估计还是参数数据类型不一致造成两种语言处理有差异