To understand realloc
To understand 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++ - std::vector<std::unique_ptr<Node>>
就是这在C++中的样子。
做的事情应该有效(因为你正在分配一个指向对象的指针数组,而不是对象,所以 malloc/realloc 是允许的),除了你缺少一点:
您只分配 3 个字节的内存,而不是 3 个指针。你需要:
node **n=(node**)malloc(3 * sizeof(Node*));
和
n=(node **)realloc(n,5 * sizeof(Node*));
相关文章:
- Realloc 两次无法在 Visual Studio 上运行
- Google Sparsehash 在类型上使用 realloc(),这很难复制
- 使用new时如何重新分配dyyanmic数组,不使用realloc删除C++?
- 在C++"new"运算符之后使用"realloc"是否安全?
- C++malloc/realloc的奇怪行为
- 无论如何如何重新分配内存,即使 realloc() 在 c++ 中失败
- 为什么我得到 realloc() 无效的旧大小
- Realloc char* 内部结构
- Realloc 调整大小数组
- 使用(以及)realloc调用Constuctor
- Realloc():即使使用malloc()分配内存,旧大小也无效
- 带有realloc的自定义池内存分配器
- 如果Malloc无法分配X字节,我应该使用Realloc还是再次使用Malloc?C++
- 使用realloc可以安全地重新分配琐碎的可复制对象的存储吗
- c++ realloc performance vs malloc
- realloc而不释放旧内存
- 实现 realloc 的独立库
- 如果正在缩小已分配的内存大小,请同时检查realloc()
- 为什么在realloc之后字符串在内存中变得无效
- To understand realloc