结构和新结构之间的区别是什么?

时间:2014-10-13 22:49:56

标签: c++

在C ++中,我已经看到了两种创建新结构的方法:

1

StructA a;
a.member1 = ...;
foo(&a); // void foo(StructA* a);

2

StructA* a = new StructA;
a->member1 = ...;
foo(a);

这两个代码snipets的区别和含义是什么?

由于

1 个答案:

答案 0 :(得分:0)

简而言之:: StructA a声明一个StructA变量 StructA* a声明指向StructA的指针。

含义:

变量StructA可以立即用于存储数据 指针StructA*必须设置为指向实际结构,然后才能用于存储数据。

当前块退出时,变量StructA将自动解除分配 当当前块退出时,指针StructA*将被释放,而它指向的数据(使用new创建)将不会消失,直到调用delete为止。如果永远不会调用delete,那么您的程序将发生内存泄漏。