对于 TabCtrl_InsertItem ,我们是否需要将 pszText 成员指向有效内存,还是操作系统会复制文本以便我们可以立即清除文本?

TCITEM tcItem = { TCIF_TEXT };
CString strText;
for (int i=0; i<3; i++) {
    strText.Format(_T("Tab %d"), i+1);
    tcItem.pszText = strText;          // option 1
    tcItem.pszText = _tcsdup(strText); // option 2
    TabCtrl_InsertItem(i, &tcItem);
}

我们如何才能知道该功能和将来其他功能的正确选择?
我在MSDN中找不到它。

最佳答案

操作系统会将字符串复制到内部数据结构中。您不需要维护支持字符数组。您可以在函数调用完成后立即释放它。

通常,任何接收字符串的Windows API函数都是这种情况。没错,MSDN文档中没有明确说明,但是大多数Windows开发人员已经知道这一点。如果不正确,则MSDN将显式调用。我想不出一个例子,如果发生的话,那是非常罕见的。

10-04 12:59