Я делаю эксперимент, чтобы понять функцию realloc в cpp. Вот мой кодЧтобы понять realloc
#include <iostream>
#include <stdlib.h>
using namespace std;
class node
{
public:
int value;
int count;
node(void)
{
count=5;
}
};
int main(int argc, char const *argv[])
{
node **n=(node**)malloc(3);
for(int i=0;i<3;i++)
{
n[i]=new node();
cin>>n[i]->value;
}
n=(node **)realloc(n,5);
n[3]=new node();
cin>>n[3]->value;
n[4]=new node();
cin>>n[4]->value;
for(int i=0;i<5;i++)
{
cout<<n[i]->value<<"\t"<<n[i]->count<<endl;
}
return 0;
}
Когда я ввожу значение, все узлы печатаются точно, кроме первого, в котором он печатает некоторый адрес и нулевое значение.
Почему это происходит? Спасибо заранее!
Не используйте 'malloc' или' realloc' в C++. Они для C, и внутренне 'new' часто (но это зависит от реализации), вызывающий' malloc' (и, конечно, 'delete' будет называть' free'). Используйте только 'new' &' delete' в C++, желательно неявно, используя * умные указатели * –
Почему этот вопрос был проголосован? – Kam
@ Кам, вероятно, потому, что это не C++ –