【GUI】wxWidgets(旧wxWindows) その3【サイザー】
■ このスレッドは過去ログ倉庫に格納されています
0090デフォルトの名無しさん
2006/12/31(日) 16:43:52バージョンはwxMSW-2.8.0です。
// src/common/dynarray.cpp 379行目から
void name::insert(iterator it, const_iterator first, const_iterator last) \
{ \
size_t nInsert = last - first, nIndex = it - begin(); \
if (nInsert == 0) \
return; \
Grow(nInsert); \
\
memmove(&m_pItems[nIndex + nInsert], &m_pItems[nIndex], \
(m_nCount - nIndex)*sizeof(T)); \
for (size_t i = 0; i < nInsert; ++i, ++it, ++first) \
*it = *first; \
m_nCount += nInsert; \
}
Growによって配列が再確保されるとitがdeleteされた領域を指してしまいます。
Growの後に it = begin() + nIndex; を挿入すれば大丈夫っぽいです。
■ このスレッドは過去ログ倉庫に格納されています