Classsname实例[count]之间有什么区别;和Classname实例= C ++中的新实例[count]?

时间:2018-05-24 16:16:54

标签: c++

我只是想知道之间的区别是什么:

Student std[2];

Student std* = new Student[2];

我知道第一个就像一个数组,你为每个索引声明了一个新的内存,但是如果你以另一种方式执行它并且在访问类中的成员时它有多么不同呢?

我尝试找到类似的问题,但没有运气。

提前致谢。

1 个答案:

答案 0 :(得分:0)

学生std [count]; 在堆栈上分配,需要具有预定(常量)大小。 count 需要是编译时常量。

学生std =新学生[count]; 会给你错误。 "新"运算符在堆上分配内存并返回指向新分配的内存的指针。这允许您在编译时动态分配没有预定大小的内存。您应该编写 Student * std = new Student [count]; 这将为您提供指向所创建数组的第一个元素的指针。此外,完成 delete [] str; 后,您将需要释放内存。如果你不这样做,你就会有内存泄漏。