Проблема с CDT в затмении

Я использую Eclipse для C ++ программы.

После создания кода, когда я запускаю код, я получаю перестал работать name.exe ошибка.
Тот же код работает нормально http://codepad.org/2c5xFbLM .

Пожалуйста, помогите мне найти эту проблему.
Заранее спасибо.
Мой код:

#include<iostream>
#include<math.h>
#include <cstdlib>
using namespace std;

struct node{
struct node * lc;
struct node * rc;
int data;
};

typedef struct node Node;

Node * getNewNode(int data){
Node * node = NULL;

node = (Node*)malloc(sizeof(node));
node -> data = data;
node -> lc = NULL;
node -> rc = NULL;

return node;
}

Node * buildBst(Node * root,int data){
if(NULL == root){
return getNewNode(data);
}
if(data > root -> data){
root -> rc = buildBst(root->rc,data);
}else{
root -> lc = buildBst(root->lc,data);
}
return root;
}

void printInorder(Node * root){
if(root != NULL){
printInorder(root -> lc);
cout << root -> data << " ";
printInorder(root -> rc);
}
}

int main(int argc, char* argv[]) {

int arr [] = {2,3,4,1,5,9,0,3};
Node * root = NULL;
for(int i = 0;i < 6; ++i){
root = buildBst(root,arr[i]);
}
printInorder(root);
cout << endl;
}

1

Решение

Поскольку вы используете C ++, используйте new оператор вместо mallocсбой произошел после 14-й итерации при вашем вызове malloc или при создании 4-го узла из-за дополнительного заполнения с отладкой, он разрешил его в режиме отладки (хотя технически UB в противном случае) и, вероятно, записал через защитные байты.

Точно так же произошел сбой в коде malloc, потому что вы использовали sizeof(node) против sizeof(Node),

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector