我应该何时使用“新”?
可能重复:
我应该什么时候在C ++中使用新的关键字?
我不知道案例1和案例2的区别:
我在下面定义一个结构体:
struct Graph {
int ID;
}
情况1:
Graph g;
g.ID = 1;
情况2:
Graph* g = new G();
g.ID = 1;
这两种情况是一样的吗? 有什么不同?
在情况1中,g所使用的内存被分配到堆栈中,这意味着当它所在的函数返回时它将被自动释放。
在情况2中,g使用的内存分配在堆上,这意味着只有在使用delete操作符显式删除时才会释放内存。
另外,在情况2中,因为g是一个指针,所以你应该使用 - >运算符来访问g的字段:
g->ID = 1;
在情况2中,你的意思是new Graph
,然后g->ID = 1
。 尝试从http://en.wikipedia.org/wiki/New_(C%2B%2B)开始。 小故事,情况1在编译时分配内存,而情况2在运行时分配内存。
区别在于数据分配的位置。
在情况1中,Graph结构的数据分配在堆栈上。 您可以通过名称“g”访问它。
在情况2中,Graph结构的数据分配在堆上。 您可以通过指向该数据的指针访问该数据,该数据通过名称“g”保存。
链接地址: http://www.djcxy.com/p/96529.html