На данный момент код не опубликован, поэтому мы не можем точно увидеть, что происходит, но если вы не объявили какой-либо элемент данных как статический элемент данных, и каждому производному экземпляру BTreeNode
принадлежитэто собственный закрытый буфер, поэтому я могу в значительной степени гарантировать, что проблема не имеет ничего общего с наследованием или количеством экземпляров производного объекта, который вы объявляете, но, скорее всего, это проблема вашего алгоритма вставки.Это может быть небольшая ошибка, которая не проявляется в каждом случае, следовательно, причина, по которой некоторые вставки работают, но опять же, поскольку каждый объект экземпляра имеет свой собственный буфер памяти, то единственный способ, которым объект экземпляра мог иметь его буфер в памятиup, если у алгоритма в функции-члене, которая обращается к массиву объекта экземпляра, есть проблема.
Также вы сказали, что в каждом экземпляре BTreeNode
есть массив символов по 1024 байта, но вы 'сохраняя пары с помощью функции шаблона ... вы делаете какой-то тип приведения пары к unsigned char*
и используете memcpy()
для выделения структуры пары в буфере?Если да, то многое может пойти не так, если вы не будете внимательны к тому, как увеличивать и разыгрывать указатели.