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

在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的话怎么办……求具体

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++默认提供。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-10

直接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要改成什么 怎么改~~~

本回答被提问者采纳
第2个回答  2013-04-12
注意C++和C的函数库不同喵~

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

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

如果只是想要在C++里面编译通过,加上 extern "c" {} 关键字注释C代码块即可喵。
第3个回答  2013-04-11
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'
………………求修订……

第4个回答  2013-04-11
比如:pos *P;
p=new pos;
if(!p){
cout << "分配内存失败“ << endl;
exit(0);

}
p->i=3;
p->=i*i;
...本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网