【发布时间】:2013-02-26 01:30:01
【问题描述】:
我正在使用 DirectWrite API,并且正在实现自己的布局和文本渲染引擎。我已经成功创建了我的IDWriteTextLayout 对象。当我进行以下调用时,我收到了访问冲突错误,但我不知道为什么:
DWRITE_LINE_METRICS m_lineMetrics;
UINT32 m_lineCount;
DX::ThrowIfFailed(
m_textLayout->GetLineMetrics(&m_lineMetrics,31,&m_lineCount)
);
【问题讨论】:
-
您承诺第一个参数是一个指向包含 31 个元素的数组的指针。不是,你只有一个。卡布姆。
-
我就是这么想的。文档对此感到困惑。它表示当函数返回时,将有一个指向 DWRITE_LINE_METRICS 结构数组的指针。当我尝试将指针传递给具有 31 个元素的数组时,它会破坏函数签名
-
如何在不破坏签名的情况下将指针传递给具有 31 个元素的数组
-
我想通了。我猜我正在阅读函数的文档错误。您可以将指针传递给单个 DWRITE_LINE_METRICS 结构或 DWRITE_LINE_METRICS 结构数组。我无法回答自己的问题,因为我是新手。
-
无论哪种方式,它都是一个指针。问题是它指向的数组必须像第二个参数所指示的那样大。
标签: c++ access-violation directwrite