c++中给结构体分配动态内存的问题……用new吗 怎么用?
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++默认提供。
直接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要改成什么 怎么改~~~
realloc 只是 “从操作系统中分配内存给当前进程”
new 默认包含“从操作系统分配内存给当前进程,并使用构造函数初始化该内存区域” 两个操作。
如果只是想要在C++里面编译通过,加上 extern "c" {} 关键字注释C代码块即可喵。
{
(*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'
………………求修订……
p=new pos;
if(!p){
cout << "分配内存失败“ << endl;
exit(0);
}
p->i=3;
p->=i*i;
...