在C ++中,我已经看到了两种创建新结构的方法:
1
StructA a;
a.member1 = ...;
foo(&a); // void foo(StructA* a);
2
StructA* a = new StructA;
a->member1 = ...;
foo(a);
这两个代码snipets的区别和含义是什么?
由于
答案 0 :(得分:0)
简而言之::
StructA a
声明一个StructA变量
StructA* a
声明指向StructA的指针。
含义:
变量StructA
可以立即用于存储数据
指针StructA*
必须设置为指向实际结构,然后才能用于存储数据。
当前块退出时,变量StructA
将自动解除分配
当当前块退出时,指针StructA*
将被释放,而它指向的数据(使用new
创建)将不会消失,直到调用delete
为止。如果永远不会调用delete
,那么您的程序将发生内存泄漏。