Witam przy dodawaniu do drzewa ktoregos elementu z rzedu debug wyrzuca mi blad w malloc.c
__forceinline void * __cdecl _heap_alloc (size_t size)
{
if (_crtheap == 0) {
_FF_MSGBANNER(); /* write run-time error banner */
_NMSG_WRITE(_RT_CRT_NOTINIT); /* write message */
__crtExitProcess(255); /* normally _exit(255) */
}
return HeapAlloc(_crtheap, 0, size ? size : 1);
}
Struktura klasy:
struct node
{
char *key_value;
char *value;
node *left;
node *right;
};
class btree
{
public:
btree();
int compare;
void insert(char *key, char *value);
node *search(char *key);
private:
void insertNew(char *key,char *value, node *leaf);
node *search(char * key, node *leaf);
node *root;
};
btree.cpp
void btree::insert(char* key, char *value)
{
if(root!=NULL)
insertNew(key, value, root);
else
{
root=new node;
root->key_value=key;
root->value=value;
root->left=NULL;
root->right=NULL;
}
}
void btree::insertNew(char* key, char *value, node *leaf)
{
compare = strcmp(key,leaf->key_value);
if(compare < 0)
{
if(leaf->left!=NULL)
insertNew(key,value, leaf->left);
else
{
leaf->left=new node;
leaf->left->key_value=key;
leaf->left->value=value;
leaf->left->left=NULL;
leaf->left->right=NULL;
}
}
else if (compare >= 0 )
{
if(leaf->right!=NULL)
insertNew(key,value, leaf->right);
else
{
leaf->right=new node;
leaf->right->key_value=key;
leaf->right->value=value;
leaf->right->left=NULL;
leaf->right->right=NULL;
}
}
}
Z tego co udalo mi sie zdebugowac program zatrzymuje sie przy n-tym dodaniu elementu :
leaf->right=new node;