烦请各位大侠帮忙看看:
一个C++写的DLL,在C#的Windows应用程序中可以被正常调用,但在Web应用程序调用时系统报错:
     System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
跟踪了下 ,C++中的报错代码如下:
TSplitInfo     tFront[SR_DICTIONARY_MAXWORDLEN];
TSplitInfo     tBehind[SR_DICTIONARY_MAXWORDLEN];
//memset(tFront,0,sizeof(struct TSplitInfo)*SR_DICTIONARY_MAXWORDLEN);
//memset(tBehind,0,sizeof(struct TSplitInfo)*SR_DICTIONARY_MAXWORDLEN);

if(m_oSplitWord.SplitFrontAndBehind(szWord,dwNumHz,&tFront[0],&tBehind[0]))
    
    我试着用memset去为这两个结构体分配空间,还是报同样的错误,
结构体定义如下:
/* 两字词 */
struct TTwoHz
{ WORD  wHzCode[3];
char  szReserved[2];
};
char szName[8];
};
DWORD dwPinYinID[4];
DWORD dwFrCost;
};
/* 词表 */
struct TWordTable
{
DWORD dwSizeTable;
DWORD dwNumTwo;
union
{
DWORD dwOffsetTwo;
TTwoHz* pTwoHz;
};
DWORD dwNumThree;
union
{
DWORD dwOffsetThree;
TThreeHz* pThreeHz;
};
DWORD dwNumFour;
union
{
DWORD dwOffsetFour;
TFourHz* pFourHz;
};
DWORD dwPinYinID;
DWORD dwFrCost;
};
struct TSplitInfo
{
int nNumHz; /* 汉字数目 */
union
{
TWordTable* pWordTable;
TTwoHz*     pTwoHz;
TThreeHz*   pThreeHz;
TFourHz*    pFourHz;
};
};
union
{
struct
{
WORD  wHzCode;
char  szReserved[2];
};
char szName[4];
};
DWORD dwPinYinID[2];
DWORD dwFrCost;
};
/* 三字词 */
struct TThreeHz
{
union
{
WORD wHzCode[2];
char szName[4];
};
DWORD dwPinYinID[3];
DWORD dwFrCost;
};
/* 四字词 */
struct TFourHz
{
union
{
struct
{
WORD  wHzCode[3];
char  szReserved[2];
};
char szName[8];
};
DWORD dwPinYinID[4];
DWORD dwFrCost;
};