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

在c中是这样:typedefstruct{inti;intj;}pos;typedefstruct{intorder;posseat;intdi;}m;typedefst... 在c中是这样:
typedef struct
{
int i;
int j;
}pos;

typedef struct
{
int order;
pos seat;
int di;
}m;

typedef struct
{
movestep *base;
movestep *top;
int stsize;
}stack;

void buildstack(stack *s)
{
(*s).base=(m*)realloc((*s).base,((*s).stsize+100)*sizeof(m));
……

在c++里怎么用?要是想用new的话怎么办……求具体
展开
 我来答
小星星教育知识分享
高粉答主

2019-12-10 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67129

向TA提问 私信TA
展开全部

c++中给结构体分配动态内存是用new。

示例:

struct mystruct

{

int a;

char b;

}

mystruct *pMySrt=new mystruct;

pMySrt->a=1;

pMySrt->b='a';

cout<<pMySrt->a<<" "<<pMySrt->b<<endl;

delete pMySrt;

扩展资料

c++中new的用法

1、调用operator new分配内存,operator new (sizeof(A)) ;

2、调用构造函数生成类对象,A::A() ;

3、返回相应指针 ;

4、分配内存这一操作就是由operator new(size_t)来完成的,如果类A重载了operator new,那么将调用A::operator new(size_t ),否则调用全局::operator new(size_t ),后者由C++默认提供。

lyqf365
推荐于2018-05-10 · TA获得超过1185个赞
知道小有建树答主
回答量:1291
采纳率:100%
帮助的人:771万
展开全部

直接new就可以了,不过C结构体如果定义在.h文件里,最好加上,避免出错

#ifdef _cplusplus

extern "C"{

#endif

 

typedef struct

{

    int i;

    int j;

}pos;

 

 

 

#ifdef _cplusplus

}

#endif

 

 

 

pos *p = new pos;
delete p;
追问
我看到你在另一个问题里的回答了~~~谢谢你  其实两个问题都是一样的 我第一个问题是忘记说具体内容了……囧……然后我给你追问了……

其实 重点我是想问我给的程序中realloc要改成什么 怎么改~~~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ncwhale
2013-04-12 · TA获得超过134个赞
知道答主
回答量:98
采纳率:0%
帮助的人:88万
展开全部
注意C++和C的函数库不同喵~

realloc 只是 “从操作系统中分配内存给当前进程”

new 默认包含“从操作系统分配内存给当前进程,并使用构造函数初始化该内存区域” 两个操作。

如果只是想要在C++里面编译通过,加上 extern "c" {} 关键字注释C代码块即可喵。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小忍and奏
2013-04-11 · 超过17用户采纳过TA的回答
知道答主
回答量:153
采纳率:0%
帮助的人:65.7万
展开全部
void buildstack(stack *s)

{

(*s).base=(m*)new((&(*s).base) sizeof((*s).base))char[((*s).stsize 100)*sizeof(m)];

……

new(地址)类型[大小]

delete [] &(*s.base) //释放
应该是这样吧
追问
按照你说的改会报错:
error C2143: syntax error : missing ')' before 'sizeof'
执行 cl.exe 时出错.

然后我在((&(*s).base) sizeof((*s).base))中的sizeof之前加上“)”之后又说:error C2059: syntax error : 'sizeof'
………………求修订……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2013-04-11 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6332万
展开全部
比如:pos *P;
p=new pos;
if(!p){
cout << "分配内存失败“ << endl;
exit(0);

}
p->i=3;
p->=i*i;
...
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式