【发布时间】:2015-04-26 17:50:15
【问题描述】:
我正在做一些实验来了解 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;
}
当我输入值时,除了第一个节点外,所有节点都被准确打印,其中它正在打印一些地址和零值。
为什么会这样? 提前致谢!!
【问题讨论】:
-
不要在 C++ 中使用
malloc或realloc。它们用于 C,内部new通常(但这取决于实现)调用malloc(当然delete会调用free)。在 C++ 中仅使用new和delete,最好使用 智能指针 隐式使用 -
为什么这个问题被否决了?
-
@Kam 可能是因为这不是 C++