c#以unsafe方式调用C++代码会异常吗?

如有一个c++的接口函数:void CppFunc(float* data,int len);
C#调用传值采用unsafe -fixed方式,代码如下:
public unsafe void CSharpFunc(float[] data)

fixed(float* pData = data)
{
//这里直接钉住内存,获取指针,主要是因为调用方便。
CppFunc(pData,len);
}

类似如上的代码,前几日出现了AccessViolationexception异常,让我怀疑人生了。
这种方式调用C++会出异常吗?为什么?unsafe有什么大坑吗?谢谢回答

CppFunc(&pData[0],len);