运行时检查失败 #2 - 变量 (ItemFrom) 周围的堆栈已损坏
Run-Time Check Failure #2 - Stack around the variable (ItemFrom) was corrupted
我想编写这段代码来做一些与我的copyItemFromTree
方法相关的事情,但是在我的函数结束时,我有运行时检查失败#2...错误,你能帮我解决这个问题吗? pFrom
和 pTo
是 MFC 对象Ctreecntrl
;
TVITEM ItemFrom, ItemTo;
TCHAR szTextFrom[1024];
ItemFrom.pszText = szTextFrom;
ItemFrom.cchTextMax = 1024;
ItemFrom.hItem = hItem;
TCHAR szTextTo[1024];
ItemTo.pszText = szTextTo;
ItemTo.cchTextMax = 1024;
ItemTo.hItem = hItemInTo;
if (pFrom->GetItem(&ItemFrom) && pTo->GetItem(&ItemTo))//I think the problem is here but i don't know how to solve this.
{
if (ItemFrom.cChildren)
{
ItemTo.mask = TVIF_CHILDREN;
ItemTo.cChildren = ItemFrom.cChildren;
pTo->SetItem(&ItemTo);
}
}
最有可能的是"运行时检查失败 #2"是因为项目未初始化为零。蒙版也没有设置。这会导致未定义的行为。
请尝试以下操作并将各行分开,以便于调试:
TVITEM ItemFrom = { 0 };
TVITEM ItemTo = { 0 };
TCHAR szTextFrom[1024];
ItemFrom.pszText = szTextFrom;
ItemFrom.cchTextMax = 1024;
ItemFrom.hItem = hItem;
ItemFrom.mask = TVIF_TEXT;
TCHAR szTextTo[1024];
ItemTo.pszText = szTextTo;
ItemTo.cchTextMax = 1024;
ItemTo.hItem = hItemInTo;
ItemTo.mask = TVIF_TEXT;
ASSERT(pFrom->GetItem(&ItemFrom));
ASSERT(pTo->GetItem(&ItemTo));
if (pFrom->GetItem(&ItemFrom) && pTo->GetItem(&ItemTo))
{
...
}
此行不会复制子项:
ItemTo.mask = TVIF_CHILDREN ;
ItemTo.cChildren = ItemFrom.cChildren;
pTo->SetItem(&ItemTo);
你必须把孩子一个接一个地从一棵树复制到另一棵树上。您可以尝试如下操作:
if (hItemFrom)
pTo->InsertItem(pFrom->GetItemText(hItemFrom), hParent);
相关文章:
- 变量周围的堆栈'...'已损坏
- 运行时检查失败 #2 变量"A"周围的堆栈已损坏
- 运行时检查失败 #2 - 变量"e"周围的堆栈已损坏。发生
- 变量周围的堆栈'sortArray'已损坏
- 变量周围的堆栈'folderPath'已损坏
- 运行时检查失败 #2 - 变量周围的堆栈'...'已损坏
- 运行时检查失败 #2 - 变量"l1"周围的堆栈已损坏
- C++:此代码可以编译,但引发运行时检查失败 #2 - 围绕变量周围的堆栈'num'已损坏。发生
- 数组变量周围的堆栈已损坏
- 运行时检查失败 - 变量周围的堆栈已损坏
- 调试:运行时检查失败 #2 - 变量"LoggerThread"周围的堆栈已损坏
- 运行时检查失败 #2 - 变量周围的堆栈'k'已损坏
- 运行时检查失败 #2 - 变量"数字选择"周围的堆栈已损坏
- 数组问题:变量周围的堆栈'arr'已损坏
- 运行时间检查:变量周围的堆栈已损坏
- 变量周围的堆栈'Yarray'已损坏
- 变量"name"周围的堆栈已损坏C++
- 运行时检查失败#2 - 变量周围的堆栈'myArray'已损坏.- 似乎无法弄清楚如何删除此错误
- MS 工作室 17 变量周围的堆栈已损坏
- 在 c++ 中 int 数组周围堆栈损坏错误