c++中给结构体分配动态内存的问题……用new吗 怎么用

 我来答
lyqf365
2013-04-11 · TA获得超过1185个赞
知道小有建树答主
回答量:1291
采纳率:100%
帮助的人:768万
展开全部

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,但是这种方法绝对不推荐,只有你对你的代码行为非常清楚时才能这么做。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式