我必须为我的类(class)做一个作业,它说不要使用静态数组,只使用动态数组。我在书上和网上都看过,但我似乎不明白。
我认为静态是在编译时创建的,而动态是在运行时创建的,但我可能将其误认为是内存分配。
你能解释一下C++中静态数组和动态数组的区别吗?
最佳答案
静态数组是在堆栈上创建的,并且具有自动存储期限:您不需要手动管理内存,但是当它们所在的函数结束时它们会被销毁。它们在编译时必须具有固定的大小:
int foo[10];
使用 operator new[]
创建的数组具有动态存储持续时间并存储在 heap 上(技术上是“免费存储”)。它们在运行时期间可以有任何大小,但您需要自己分配和释放它们,因为它们不是堆栈帧的一部分:
int* foo = new int[10];
delete[] foo;
关于c++ - C++中的静态和动态数组有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2672085/