发布日期:2018-03-26
请问C++的静态数组和动态数组有什么区别?+ 查看更多
请问C++的静态数组和动态数组有什么区别?
+ 查看更多
发布日期:2018-02-26 10:21
分类:CPlusPlus
浏览次数:293
我必须在我的类里实现一个功能,但是编译器说没有使用静态数组,只有动态数组。我看了书,上网查了资料,但是不是很明白。
我认为静态是在编译期创建的,而动态是在运行期。但是我可能在内存分配方面犯了错误。能解释一下C++静态数组和动态数组的区别吗?
回答
静态数组 在栈上创建,并且拥有自动存储器,你不需要管理内存,但是函数结束时它们会被销毁。必须有一个固定的大小,例如:
int foo[10];
动态数组 使用操作符 new[]创建的数组拥有动态内存,并且存储在堆上(技术上来说是自由存储)。可以拥有任意的大小,但是需要内存分配和释放,因为他们不是栈的一部分。
int* foo = new int[10]; delete[] foo;