C++ 访问冲突DirectWrite

C++ 访问冲突DirectWrite,c++,access-violation,directwrite,C++,Access Violation,Directwrite,我正在使用DirectWrite API,并正在实现自己的布局和文本渲染引擎。我已经成功创建了我的IDWriteTextLayout对象。当我打以下电话时,我收到一个访问冲突错误,我不知道为什么: DWRITE_LINE_METRICS m_lineMetrics; UINT32 m_lineCount; DX::ThrowIfFailed( m_textLayout->GetLineMetrics(&m_lineMetrics,31,&m_lineCount) )

我正在使用DirectWrite API,并正在实现自己的布局和文本渲染引擎。我已经成功创建了我的
IDWriteTextLayout
对象。当我打以下电话时,我收到一个访问冲突错误,我不知道为什么:

DWRITE_LINE_METRICS m_lineMetrics;
UINT32 m_lineCount;

DX::ThrowIfFailed(
   m_textLayout->GetLineMetrics(&m_lineMetrics,31,&m_lineCount)
);

我想出来了。我猜我对函数的文档解释不正确。您可以传递指向单个DWRITE\u LINE\u度量结构的指针,也可以传递一个DWRITE\u LINE\u度量结构数组。

您承诺第一个参数是指向包含31个元素的数组的指针。不是,你只有一个。我就是这么想的。文档对此很混乱。它表示,当函数返回时,将有一个指向DWRITE\u LINE\u度量结构数组的指针。当我试图传递一个指向包含31个元素的数组的指针时,它会破坏函数signature。我如何传递指向包含31个元素的数组的指针而不破坏signature呢。我想我是看错了函数的文档。您可以传递一个指向单个DWRITE\u LINE\u度量结构的指针,也可以传递一个DWRITE\u LINE\u度量结构数组。我不能回答我自己的问题,因为我是一个新手。不管怎样,这都是一个指针。问题是它所指向的数组必须足够大,如第二个参数所示。