c++中给结构体分配动态内存的问题……用new吗 怎么用
展开全部
C++中是没有结构体的,从C继承来的struct已经变成类了,而不再只是一个结构体,直接new就可以了。
#include<iostream>
struct myclass
{
int a;
myclass(int arg);
myclass();
void show();
};
myclass::myclass(int arg)
{
this->a = arg;
}
myclass::myclass()
{
this->a = 0;
}
void myclass::show()
{
std::cout<<this->a<<std::endl;
}
int main()
{
myclass* obj = new myclass();
obj->show();
myclass *obj2 = new myclass(100);
obj2->show();
delete obj;
delete obj2;
}
追问
谢谢啊~~
你给的程序中myclass就是一个类(Class)吧……重点在下面~
我还想再问一下~原来c程序中是:
typedef struct
{
movestep *base;
movestep *top;
int stsize;
}stack;
void buildstack(stack *s)
{
(*s).base=(m*)realloc((*s).base,((*s).stsize+100)*sizeof(m));//(其中m也是一个struct)
……
……
然后现在到c++中对应怎么用?(主要是realloc怎么改成new)
追答
malloc出来的东西,可以通过realloc来重新分配,但是new出来的东西没有renew之类的操作符号的。
可用的方案有三种,一种是采用C的malloc 和realloc来处理
第二种是,用new来分配新的空间后,将原数据复制过来,并且把原空间delete掉,再指向新空间
第三种是,new出来的东西,其实也是要用到malloc来分配内存的,但是不会调用构造,在不影响使用的情况下,可以对new出来的东西进行realloc,但是这种方法绝对不推荐,只有你对你的代码行为非常清楚时才能这么做。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询