new キーワードを使用するときにヒープ領域を手動で割り当てるために、new 演算子をオーバーライドしています。
通常、そのアイテムへのポインターを持つスタック割り当てヒープ コンテナーを使用します。
CArray<CObject*> objects;
-結構です。しかし、私は好き嫌いがあり、バッファーを作りたいです-
CArray<CObject> objects;
-これにより、POD タイプを変更できました。したがって、それらの使用に自然に適したスタックにそれらを割り当てます。
CVertex vertex;
objects.push_back(vertex);
しかし、それはヒープを破損し (私はそれらの悪い週の 1 つを経験しました)、クレイジーなエラーを出します:
0xC0000017: Not Enough Quota.
配列オブジェクトを事前に割り当ててから、 = 演算子をpush_back()内部で使用します。
一時オブジェクトをヒープに割り当ててから、それらを配列に追加することで問題を解決しました。しかし、それは正しくないようで、私には理解できません。
要求に応じて、いくつかのコード:
CArray::push_back( T& newElement )
{
m_internalElements[allocatedSize] = newElement;
allocatedSize++;
}
CArray::preallocate_and_initialize( size_t itemCount )
{
T* newInternalElements = mem::allocate_and_initialize( T, itemCount );
//copy over
}
これらのオブジェクトをバッファー要素のバイナリ検索 (特定の頂点のインデックス バッファー内の適切な項目を検索) で使用しているため、ヒープに割り当てられたCVertexですべて機能し、メッシュを完全にうまく構築することに注意してください。