2013-07-07 112 views
-1

如何在C分配内存++这种C代码:C++内存分配在C

airline* myairline = (airline *) malloc(sizeof(airline)); 

它是:

airline* myairline = new myairline

如果是这样,为什么我们不需要指定大小?

+0

你没有。你需要在C代码中使用C++吗? – UmNyobe

+0

它被指定,它的大小是1,1 * sizeof(airline) –

+0

编译器知道它有多大,(以及如何调用它的ctor)。 –

回答

0

在C++中使用'new'语句分配动态内存总是一个好主意,因为'new'语句在发生错误时会引发异常。分配的内存大小将成为航空公司对象的确切大小。

希望这会有所帮助!

+3

在C++ 14中使用'new'几乎不是一个好主意。我们有RAII,所以使用它。 – chris

+0

所以我只需要航空公司* myairline =新的我的航空公司?谢谢 – user2557607

+0

@ user2557607'TheClass anObj;' – 2013-07-07 07:06:01

1

您不需要指定大小。 operator new为持有航空公司类型的对象分配足够的内存,构造对象并为您提供指向它的指针。

操作员删除不需要大小。

+0

这个怎么样?如何使用新的关键字代码\t p-> plast =(char *)malloc(strlen(pl)+1); – user2557607

+2

@ user2557607,更容易使它成为'std :: string'。 – chris

+0

如果你正在学习C++,尽量不要用c语言学习它,如果你可以直接用C++思考的话,你是有优势的:)所以,使用std库,非常多! –

2

CC++代码,特别是内存管理功能,不应混合!

致电(airline *) malloc(sizeof(airline));你实际上犯了一个大错。

要分配内存C++使用新的关键字。它确保所有成员字段的正确初始化,运行适当的构造函数,初始化列表,换句话说,应该为对象完成所有的事情。

如果你的对象存储器有一个很好的机会,它实际上是不可用的。

+0

所以我所要做的只是航空公司* myairline =新的myairline? – user2557607

+0

@ user2557607,'airline myairline;'更安全,输入更少。 'new'是一个负责任的人。 – chris

+0

airline * myairline是什么意思? – user2557607

0

在新的操作符中,它自动计算大小,所以你不需要自己计算它。